考えられる解決策の1つは次のとおりです。
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();