LINQ中的Contains和Any有什么区别?

use*_*911 22 c# linq

ContainsAnyLINQ有什么区别?

Bra*_*NET 40

Contains取一个对象,Any取一个谓词.

你这样使用Contains:

listOFInts.Contains(1);
Run Code Online (Sandbox Code Playgroud)

Any这样:

listOfInts.Any(i => i == 1);
listOfInts.Any(i => i % 2 == 0); // Check if any element is an Even Number
Run Code Online (Sandbox Code Playgroud)

因此,如果您想检查特定条件,请使用Any.如果要检查元素是否存在,请使用Contains.

MSDN for Contains,Any


Hab*_*bib 8

Contains检查序列是否包含指定的元素.

Enumerable.Any检查序列的元素是否满足条件.

请考虑以下示例:

List<int> list = new List<int> { 1, 2, 3, 4, 5 };
bool contains = list.Contains(1); //true

bool condition = list.Any(r => r > 2 && r < 5);
Run Code Online (Sandbox Code Playgroud)


JJS*_*JJS 5

包含有关源集合是否为的关注ICollection任何都不为。

可枚举。包含 http://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs#f60bab4c5e27a849

public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value)
{
    ICollection<TSource> collection = source as ICollection<TSource>;
    if (collection != null)
    {
        return collection.Contains(value);
    }
    return source.Contains<TSource>(value, null);
}
Run Code Online (Sandbox Code Playgroud)

可枚举。任何 http://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs#6a1af7c3d17845e3

public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
    foreach (TSource local in source)
    {
        if (predicate(local))
        {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

  • 可惜OP没问这两种方法之间的Any()有什么区别... (2认同)