Supongamos que tengo una lista con objetos del tipo Value
. Value
tiene una propiedad Name
:Utilice Linq para encontrar elementos que se repiten consecutivamente
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" },
};
Ahora quiero obtener una lista de todos "repetir" valores (elementos en los que la propiedad nombre era idéntica a la propiedad name del elemento anterior).
En este ejemplo, quiero una lista con los dos elementos "mundo" y "a" (id = 2 y 5) para devolver.
¿Es posible este evento con linq? Por supuesto que podría hacerlo muy bien. de esta manera:
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;
}
pero como yo quiero utilizar esta consulta en un contexto más complejo, tal vez hay una solución "linqish".
esto es más eficiente que el método Zip. pero me parece que el método Zip se lee un poco mejor (es mucho más claro lo que hace) –
+1 por cierto, esta es una buena respuesta –
Funciona como un encanto –