O linq pode de alguma forma ser usado para encontrar o índice de um valor em uma matriz?
Por exemplo, esse loop localiza o índice da chave em uma matriz.
for (int i = 0; i < words.Length; i++)
{
if (words[i].IsKey)
{
keyIndex = i;
}
}
Respostas:
Isso realmente dá a você o índice inteiro e não o objeto, independentemente de qual classe personalizada você criou
fonte
System.Linq
por padrão? É onde tudo o mais está!Para matrizes, você pode usar
Array.FindIndex<T>
:Para listas, você pode usar
List<T>.FindIndex
:Você também pode escrever um método de extensão genérico que funciona para qualquer
Enumerable<T>
:E você também pode usar o LINQ:
fonte
fonte
Se você quiser encontrar a palavra, pode usar
Isso dá a você o primeiro item para o qual IsKey é verdadeiro (se houver nenhum, você pode querer usar
.FirstOrDefault()
Para obter o item e o índice, você pode usar
fonte
First
, é necessário um predicado, você não precisa doWhere
.Experimente isso ...
fonte
Acabei de postar minha implementação do método de extensão IndexWhere () (com testes de unidade):
http://snipplr.com/view/53625/linq-index-of-item--indexwhere/
Exemplo de uso:
fonte
Esta solução me ajudou mais, da msdn microsoft :
query
é a suatoList()
consulta.fonte
fonte