我在 C# 中有一个
List<>
,我想检查列表中的所有元素是否满足某些条件。此条件取决于列表中的元素以及该元素在列表中的索引。
看起来
.All(..)
没有提供索引的重载?我想做一些类似的事情:
bool result = list.All((element, index) => {
// for example:
return element != null && index % 2 == 0;
// (my actual condition is more complicated, but that's not the point of the question)
});
但这不起作用,因为没有提供索引的
.All(...)
版本。我也想出了:
bool result = list.Select((element, index) => {
// for example:
return element != null && index % 2 == 0;
}).All(identity => identity);
这有效,但是
.All(identity => identity)
让我有点死了。
有更惯用的方法吗?
自己写?
public static bool AllWithIndex(this IEnumerable<T> list, Func<T, int> func)
{
int i = 0;
foreach(var e in list)
{
if(!func(e, i))
return false;
i++;
}
return true;
}