Oto konfiguracja:użyciu LINQ i C#, starając się uzyskać dwie listy z listy przedmiotów mistrzowskich spis dwóch wewnętrznych list
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;}
}
uwzględniając następujące dane:
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"));
Teraz ja” m próbuje uzyskać następujący wynik w oświadczeniu ONE linq:
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"));
próbowałam grupowanie, używając selectmany, łączy i ca nie wydaje się, aby znaleźć właściwą drogę.
Dowolny wizjer Linq?
PS: Również, chcę przechodzić przez główną listę tylko raz ...;)
Inter nie wiem, dlaczego to działa i czy jest optymalna ... –
Boję się wydajności Concata na liście zawierającej kilkaset pozycji ... Masz rację, że może powinienem po prostu użyć pętla foreach. –