¿Se puede usar linq de alguna manera para encontrar el índice de un valor en una matriz?
Por ejemplo, este bucle ubica el índice de clave dentro de una matriz.
for (int i = 0; i < words.Length; i++)
{
if (words[i].IsKey)
{
keyIndex = i;
}
}
Respuestas:
Eso en realidad le da el índice entero y no el objeto, independientemente de la clase personalizada que haya creado
fuente
System.Linq
predeterminada? ¡Ahí es donde está todo lo demás como esto!Para matrices puede utilizar
Array.FindIndex<T>
:Para las listas puede utilizar
List<T>.FindIndex
:También puede escribir un método de extensión genérico que funcione para cualquier
Enumerable<T>
:Y también puedes usar LINQ:
fuente
fuente
Si quieres encontrar la palabra puedes usar
Esto le da el primer elemento para el que IsKey es verdadero (si no es posible, es posible que desee usar
.FirstOrDefault()
Para obtener tanto el elemento como el índice, puede usar
fuente
First
, se necesita un predicado, no necesitas elWhere
.Prueba esto...
fuente
Acabo de publicar mi implementación del método de extensión IndexWhere () (con pruebas unitarias):
http://snipplr.com/view/53625/linq-index-of-item--indexwhere/
Uso de ejemplo:
fuente
Esta solución me ayudó más, de msdn microsoft :
query
es tutoList()
consulta.fuente
fuente