Dưới đây là các thiết lập:Sử dụng LINQ và C#, cố gắng để có được hai danh sách từ một danh sách các mục sư được phân nhóm theo hai danh sách nội
public class Parent
{
public List<Child> ChildrenA = new List<Child>();
public List<Child> ChildrenB = new List<Child>();
}
public class Child
{
public Child (string name) {Name=name;}
public string Name {get;set;}
}
Có các dữ liệu sau:
var parents = new List<Parent>();
parents.Add (new Parent());
parents[0].ChildrenA.Add (new Child("A1"));
parents[0].ChildrenA.Add (new Child("A2"));
parents[0].ChildrenB.Add (new Child("B1"));
parents.Add (new Parent());
parents[1].ChildrenA.Add (new Child("A3"));
Bây giờ tôi m cố gắng để có được kết quả sau trong ONE linq tuyên bố:
var result = ... // would be an anonymous type
Assert.That (result.ChildrenA.Count, Is.EqualTo(3));
Assert.That (result.ChildrenA[0].Name, Is.EqualTo("A1"));
Assert.That (result.ChildrenA[1].Name, Is.EqualTo("A2"));
Assert.That (result.ChildrenA[2].Name, Is.EqualTo("A3"));
Assert.That (result.ChildrenB.Count, Is.EqualTo(1));
Assert.That (result.ChildrenB[0].Name, Is.EqualTo("B1"));
Tôi đã thử nhóm, sử dụng selectmany, join và tôi ca dường như không tìm được cách thích hợp.
Bất kỳ Linq wiz xung quanh?
PS: Ngoài ra, tôi muốn đi qua danh sách tổng thể chỉ một lần ...;)
Inter esting ... Tôi không chắc chắn lý do tại sao nó hoạt động mặc dù và nếu nó là tối ưu ... –
Tôi sợ hiệu suất của Concat trên một danh sách có chứa hàng trăm mặt hàng ... Bạn phải có lẽ tôi chỉ nên sử dụng một vòng lặp foreach. –