public class ClassA
{
public string MyString {get; set;}
}
public class ClassB
{
public List<ClassA> MyObjects {get; set;}
}
List<ClassB> classBList = new List<ClassB>();
var results = (from i in classBList select i.MyObjects).Distinct();
Je veux une liste distincte de tous les objets ClassA
dans le classBList
. Comment procéder à l'aide de LINQ ? Je pense à une requête imbriquée, mais je ne pouvais pas vraiment la comprendre. Toute aide est très appréciée.
Vous essayez de sélectionner plusieurs objets de résultat pour chaque objet ClassB
dans la liste d'origine.
Par conséquent, vous recherchez la méthode d'extension SelectMany
:
var results = classBList.SelectMany(b => b.MyObjects).Distinct();
Si vous souhaitez utiliser des expressions de requête, vous devrez utiliser deux clauses from
:
var results = (from b in classBList from a in b.MyObjects select a).Distinct();
Vous souhaitez utiliser IEnumerable.SelectMany()
Méthode d'extension pour aplatir la hiérarchie:
var result = classBList.SelectMany(b => b.MyObjects).Distinct();