Supposons que j'ai une liste avec des objets de type Value
. Value
a une Name
propriété:Utiliser Linq pour trouver des éléments répétitifs consécutifs
private List<Value> values = new List<Value> {
new Value { Id = 0, Name = "Hello" },
new Value { Id = 1, Name = "World" },
new Value { Id = 2, Name = "World" },
new Value { Id = 3, Name = "Hello" },
new Value { Id = 4, Name = "a" },
new Value { Id = 5, Name = "a" },
};
Maintenant, je veux obtenir une liste de tous les « répéter » les valeurs (éléments où la propriété du nom était identique à la propriété du nom de l'élément précédent).
Dans cet exemple, je souhaite qu'une liste contenant les deux éléments "world" et "a" (id = 2 et 5) soit renvoyée.
Cet événement est-il possible avec linq? Bien sûr, je pourrais si bien. comme ceci:
List<Value> tempValues = new List<Value>();
String lastName = String.Empty();
foreach (var v in values)
{
if (v.Name == lastName) tempValues.Add(v);
lastName = v.Name;
}
mais comme je veux utiliser cette requête dans un contexte plus complexe, peut-être il y a une solution « linqish ».
c'est plus efficace que la méthode Zip. mais je trouve que la méthode Zip se lit un peu mieux (c'est beaucoup plus clair que ça) –
+1 en passant, c'est une bonne réponse –
Fonctionne comme un charme –