Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Index aus List<string> mittels Linq ermitteln?


Christoph1972 - Sa 13.08.11 15:01
Titel: Index aus List<string> mittels Linq ermitteln?
Hallo zusammen,

ich möchte mich nun endlich mal in Linq einarbeiteten.

Also, ich möchte aus einer List<string> den Index einer Zeile ermitteln.

Bisher bekomme ich es nur so hin:


C#-Quelltext
1:
2:
var n = from x in MyListOfString where x.Contains(MySearchString) select x;
Int32 i = MyListOfString.IndexOf(n.First());//n.First() weil es nur einen Treffer geben kann.


Kann man das auch in einer Zeile abhandeln? Ich finde die IndexOf Methode pass hier nicht wirklich, da ich sie ja gleich mit dem SearchPredicate Parameter verwenden könnte, gut das wäre immer noch aufwändiger.


Th69 - Sa 13.08.11 17:04

Hallo Christoph,

um eine explizite Index-Rückgabemethode kommst du m.E. nicht herum, so daß Linq hier wohl ausscheidet.
Du kannst aber mittels eines Lamda-Ausdrucks dies gut verkürzen zu:

C#-Quelltext
1:
int i = MyListOfString.FindIndex(x => x == MySearchString);                    


Edit: Es gibt doch eine Möglichkeit mit Linq, nämlich mittels der Select-Methode, s. z.B.
http://geekswithblogs.net/SanjayU/archive/2009/10/15/quick-tip--get-the-index-of-a-given-using.aspx
bzw. als eigene Linq-Methode "IndexWhere": http://snipplr.com/view/53625/linq-index-of-item--indexwhere/

In deinem Fall jedoch sehe ich bei den Linq-Varianten keinen Vorteil ;-)


Christoph1972 - Sa 13.08.11 17:36

Vielen Dank für die Hilfe!


Schade, irgend wie kommt Linq bei mir nicht zum Einsatz. Wird wohl daran liegen, das es grundsätzlich noch andere Möglichkeiten gibt.