Wenn Sie den Index des Elements möchten, tun Sie dies:
int index = list.Select((item, i) => new { Item = item, Index = i })
.First(x => x.Item == search).Index;
// or
var tagged = list.Select((item, i) => new { Item = item, Index = i });
int index = (from pair in tagged
where pair.Item == search
select pair.Index).First();
Sie können das Lambda nicht im ersten Durchgang loswerden.
Beachten Sie, dass dies ausgelöst wird, wenn der Gegenstand nicht existiert. Dies löst das Problem, indem auf nullbare Ints zurückgegriffen wird:
var tagged = list.Select((item, i) => new { Item = item, Index = (int?)i });
int? index = (from pair in tagged
where pair.Item == search
select pair.Index).FirstOrDefault();
Wenn Sie den Artikel möchten:
// Throws if not found
var item = list.First(item => item == search);
// or
var item = (from item in list
where item == search
select item).First();
// Null if not found
var item = list.FirstOrDefault(item => item == search);
// or
var item = (from item in list
where item == search
select item).FirstOrDefault();
Wenn Sie die Anzahl der übereinstimmenden Elemente zählen möchten:
int count = list.Count(item => item == search);
// or
int count = (from item in list
where item == search
select item).Count();
Wenn Sie alle Elemente möchten, die übereinstimmen:
var items = list.Where(item => item == search);
// or
var items = from item in list
where item == search
select item;
Und vergessen Sie null
in keinem dieser Fälle , die Liste zu überprüfen .
Oder verwenden Sie (list ?? Enumerable.Empty<string>())
anstelle vonlist
.
Vielen Dank an Pavel für die Hilfe in den Kommentaren.