Ce n'est pas si compliqué d'une question, mais je ne peux pas envelopper ma tête autour de ma tête à Linq.
J'ai un énumérable énumérable Code>: P> List<string> result = new List<string>();
foreach (var v in ListOfLists)
{
foreach (var s in v)
{
result.Add(s);
}
}
result.Distinct();
4 Réponses :
Utilisez SelectMany code>. Voir http://msdn.microsoft.com/en-us/library/bb534336.aspx p>
var distinctStrings = ListOfLists.SelectMany(list => list).Distinct();
var result = ListOfLists.SelectMany(v => v).Distinct().ToList();
Pas besoin de cela tolis au milieu
Et si vous avez besoin de la TOLIST, faites-le après la distincte plutôt qu'auparavant. Dans ce cas, votre distinct renvoie actuellement un
@Jim Woherey - Grande suggestion. Merci à vous et à Richk pour les commentaires. Nous apprenons déjà.
Merci beaucoup!!! - J'ai "intersect" une liste de listes à l'aide de LINQ - Var Résultat = ListOffistes.SelectMany (V => V) .Où (m => ListOflists.Trueforall (n => N.Contains (M))). Distinct () .Lister();
Pour la complétude, la syntaxe d'expression de requête est parfois plus facile (je trouve) à proposer que l'invocation correcte de SelectMany code>. Ici, ce serait:
Vous avez déjà les réponses. Je suggérerais de prendre une photo à la méthode de l'extension avec ce problème! Où vos méthodes de vulgarisation font le Selectmany et distincts de manière optimisée.