¿Cómo combinar objetos en una colección por propiedad igual utilizando LINQ?
Tengo una colección de objetos
ObservableCollection
new Node(“Node1”, tabs1);
new Node(“Node1”, tabs2);
new Node(“Node1”, tabs3);
new Node(“Node2”, tabs4);
new Node(“Node3”, tabs5);
}
¿Podría decirme cómo de esta colección puedo obtener una colección en la que todos los objetos con el mismo Nombre se unirán en un solo objeto? En mi caso, quiero que los primeros tres elementos de la colección sean uno solo que sería como Node(“Node1”, tabs) donde tabs es igual a tabs1 + tabs2 + tabs3. Por lo tanto, el resultado sería:
ObservableCollection
new Node(“Node1”, tabs);
new Node(“Node2”, tabs4);
new Node(“Node3”, tabs5);
}
Sé cómo hacerlo sin Linq, pero tiene demasiado código. Me gustaría hacerlo usando Linq, pero no puedo entender cómo escribir una consulta.
Los objetos de Nodes están representados por una clase simple:
public class SettingNode : ISettingNode
{
public string Name { get; private set; }
public IEnumerable
}
davy.ai
Puedes utilizar el método
GroupBy
de Linq para agrupar los objetos en la colección por su propiedadName
. Luego puedes utilizar el métodoSelect
para crear una nueva colección de objetosSettingNode
con la propiedadTabs
combinada.El siguiente código debería hacer el trabajo: