C# 惯用的 `myList.All((item, index) => {...})`

问题描述 投票:0回答:1

我在 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)
让我有点死了。

有更惯用的方法吗?

c# linq idioms
1个回答
0
投票

自己写?

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.