Autor Beitrag
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Sa 13.08.11 15:01 
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:

ausblenden 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.

_________________
Gruß
Christoph
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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:
ausblenden 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.
geekswithblogs.net/S...f-a-given-using.aspx
bzw. als eigene Linq-Methode "IndexWhere": snipplr.com/view/536...of-item--indexwhere/

In deinem Fall jedoch sehe ich bei den Linq-Varianten keinen Vorteil ;-)
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: 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.

_________________
Gruß
Christoph