2015-03-24 22 views
7

Làm cách nào để viết một câu lệnh LINQ chọn đối tượng cha có đối tượng con phù hợp trong bộ sưu tập của nó? Đây là các lớp mẫu.LINQ để chọn đối tượng cha mẹ nơi đối tượng con có đối tượng con phù hợp

class Parent { 
    int ID { get; set; } 
    string Name { get; set; } 
    List<Child> Children { get; set; } 
} 

class Child { 
    int ID { get; set; } 
    string Name { get; set; } 
    string Nickname { get; set; } 
} 

Trong ví dụ trên, tôi muốn trả lại tất cả phụ huynh có chứa một đứa trẻ có biệt hiệu cụ thể.

+2

Bỏ phiếu cho câu hỏi là khá khắc nghiệt. Tôi đã tìm kiếm SO * và * Google cả trước khi nhập câu trả lời trừu tượng này. Nếu các công cụ ở đây tốt hơn, có lẽ tôi sẽ không có câu hỏi trùng lặp. –

+2

Được thăng hạng. Đây là kết quả hàng đầu cho tìm kiếm google của tôi "LINQ chọn đối tượng cha mẹ dựa trên các đối tượng con". Nếu tôi có đại diện, tôi sẽ bỏ đánh dấu mục này là trùng lặp; câu hỏi được liên kết cung cấp một câu trả lời tương tự, nhưng cách mà tiêu đề câu hỏi được diễn đạt không giống trực giác. – Will

+1

Cảm ơn vì điều đó. –

Trả lời

18

Đây là straightfoward LINQ-to-Đối tượng:

listOfParents.Where(p => p.Children.Contains(childObjectToMatch)) 

Đối với LINQ-to-Đối tượng, nếu đối tượng con không được theo dõi như một thực thể bạn có thể cần phải phù hợp trên các lĩnh vực nhận dạng đối tượng trẻ:

int childObjectIdToMatch = childObjectToMatch.ID; 
dbContext.Parents.Where(p => p.Children.Any(c => c.ID == childObjectIdToMatch)); 
+1

Cảm ơn bạn đã dành thời gian để cung cấp câu trả lời. Bạn đã hữu ích nhất. –

+0

Cảm ơn bạn đã nhắc tôi về Bất kỳ() khi kiểm tra tài sản trẻ em. – gregsonian

Các vấn đề liên quan