Kann linq irgendwie verwendet werden, um den Index eines Wertes in einem Array zu finden?
Diese Schleife lokalisiert beispielsweise den Schlüsselindex innerhalb eines Arrays.
for (int i = 0; i < words.Length; i++)
{
if (words[i].IsKey)
{
keyIndex = i;
}
}
Antworten:
Dadurch erhalten Sie tatsächlich den Integer-Index und nicht das Objekt, unabhängig davon, welche benutzerdefinierte Klasse Sie erstellt haben
quelle
System.Linq
standardmäßig zu einer Erweiterungsmethode ? Dort ist alles andere so!Für Arrays können Sie verwenden:
Array.FindIndex<T>
:Für Listen können Sie verwenden
List<T>.FindIndex
:Sie können auch eine generische Erweiterungsmethode schreiben, die für Folgendes funktioniert
Enumerable<T>
:Und Sie können auch LINQ verwenden:
quelle
quelle
Wenn Sie das Wort finden möchten, können Sie es verwenden
Dies gibt Ihnen das erste Element, für das IsKey wahr ist (wenn es möglicherweise kein Element gibt, möchten Sie es möglicherweise verwenden
.FirstOrDefault()
Um sowohl das Element als auch den Index zu erhalten, können Sie verwenden
quelle
First
, es braucht ein Prädikat, du brauchst das nichtWhere
.Versuche dies...
quelle
Ich habe gerade meine Implementierung der IndexWhere () - Erweiterungsmethode (mit Unit-Tests) veröffentlicht:
http://snipplr.com/view/53625/linq-index-of-item--indexwhere/
Anwendungsbeispiel:
quelle
Diese Lösung hat mir von msdn microsoft mehr geholfen :
query
ist IhretoList()
Anfrage.quelle
quelle