gpt4 book ai didi

c# - 集合的 Linq 等价物至少包含 x 个项目;像 .Any() 而是 .AtLeast(int)

转载 作者:太空狗 更新时间:2023-10-30 00:14:09 25 4
gpt4 key购买 nike

是否有 Linq 方法来检查集合是否至少包含 x 项?.Any() 很棒,因为一旦找到一个项目,它就会为真,程序将不需要去获取集合中可能存在的任何其他内容。是否有 ContainsAtLeast() 方法 - 或者如何实现它以使其表现得像 .Any()

我要求的是像 .Any() 这样的行为,这样我就可以避免使用 .Count() 并执行 .AtLeast(4),所以如果它找到 4 个项目,它返回 true。

最佳答案

您可以调用 Skip 为最小数减1,然后检查是否还有剩余:

public static bool AtLeast(this IEnumerable<T> source, int minCount)
{
return source.Skip(minCount - 1).Any();
}

请注意,对于大量计数,如果您的源代码实现了 ICollection<T> , 这可能比使用 Count 慢得多.所以你可能想要:

public static bool AtLeast(this IEnumerable<T> source, int minCount)
{
var collection = source as ICollection<T>;
return collection == null
? source.Skip(minCount - 1).Any() : collection.Count >= minCount;
}

(您可能还想检查非通用 ICollection。)

关于c# - 集合的 Linq 等价物至少包含 x 个项目;像 .Any() 而是 .AtLeast(int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32616414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com