一個可能的解決方案是這樣的:
var indexes = lst.Select((item, index) => new { Item = item, Index = index })
.Where(v => v.Item == 10)
.Select(v => v.Index)
.ToArray();
首先,你選擇的所有項目和它們的索引,那麼您篩選的項目,並最終選擇了指數
更新:如果你想封裝我的或夏娃的解決方案,你可以使用類似於
public static class ListExtener
{
public static List<int> FindAllIndexes<T>(this List<T> source, T value)
{
return source.Select((item, index) => new { Item = item, Index = index })
.Where(v => v.Item.Equals(value))
.Select(v => v.Index)
.ToList();
}
}
然後你會使用類似:
List<int> lst = new List<int>();
lst.Add(20);
lst.Add(10);
lst.Add(30);
lst.Add(10);
lst.Add(90);
lst.FindAllIndexes(10)
.ForEach(i => Console.WriteLine(i));
Console.ReadLine();
我想知道你爲什麼需要這些指數。 – Adam