Aquí está la configuración:El uso de LINQ y C#, tratando de conseguir dos listas de una lista de elementos maestros agrupados por dos listas internas
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;}
}
con los siguientes datos:
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"));
Ahora estoy m tratando de obtener el siguiente resultado en la declaración de una 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"));
he intentado agrupación, utilizando SelectMany, se une y me ca no parece encontrar la forma adecuada.
Any Linq wiz around?
PS: También, quiero recorrer la lista maestra sólo una vez ...;)
Inter Sin embargo, no estoy seguro de por qué funciona y si es óptimo ... –
Tengo miedo del rendimiento de Concat en una lista que contiene varios cientos de artículos ... Tienes razón de que tal vez debería simplemente usar un bucle foreach. –