Điều này thực sự sẽ dễ dàng, nhưng tôi chỉ không thể làm việc nó ra bản thân mình, giao diện trực quan là không đủ ... :(Lựa chọn tất cả các đối tượng con trong LINQ
Hãy nói rằng tôi có một bảng State
, và tôi muốn chọn tất cả Counties
từ nhiều States
trong SQL đó sẽ là:.
select c.*
from State s join County c on c.StateCode = s.StateCode
where s.TimeZone = -5 -- or some other criteria
Ví dụ trên là đủ tầm thường để chuyển đổi sang LINQ trong một bối cảnh tĩnh:
var q = MyDataContext.GetTable<County>().Where(c => c.State.TimeZone = -5);
Nhưng nơi nó bắt đầu bị phức tạp là nếu tôi muốn có một bối cảnh truy vấn nhạy cảm hơn, chẳng hạn như sau:
public static List<County> GetCountiesForStates(List<State> states) {
// gotta do something to return all the counties for all these states
}
Bây giờ tôi có thể làm một cái gì đó như thế này bên trong phương pháp đó:
var q = MyDataContext.GetTable<County>().Where(c => states.Contains(c.State));
nhưng IMO điều đó thực sự không phù hợp, bởi vì (a) tôi phải có một static MyDataContext
thay vì sử dụng bối cảnh dữ liệu ngầm của các đối tượng State và (b) bạn đang làm việc ngược, và nếu bạn bắt đầu làm phức tạp truy vấn, nó càng trở nên xấu hơn.
Có một cách để bắt đầu truy vấn với:
var q = states... // or "from s in states..."
Theo bản năng, tôi muốn tin rằng bạn có thể làm điều này, nhưng tôi vẫn chưa tìm ra lối ...
+1 để bao gồm việc mở rộng lambda. –
Chỉ là những gì tôi muốn - CẢM ƠN BẠN! –
Chỉ cần một lỗi nhỏ - phải là "countries.Where (c => c.Property) ... –