2014-05-07 4 views

Antwort

28

Contains nimmt ein Objekt, ein Prädikat Any nimmt.

Sie verwenden Contains wie folgt aus:

listOFInts.Contains(1); 

und Any wie folgt aus:

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

Also, wenn Sie für einen bestimmten Zustand überprüfen möchten, Any verwenden. Wenn Sie für die Existenz eines Elements überprüfen möchten, verwenden Contains.

MSDN für Contains, Any

7

Contains überprüft, ob die Sequenz enthält ein angegebenes Element.

Enumerable.Any prüft, ob Element einer Sequenz eine Bedingung erfüllt.

betrachte das folgende Beispiel:

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); 
0

Contains

Bestimmt, ob eine Sequenz ein angegebenes Element enthält, durch den Standard-Gleichheitsvergleichs.

Any

Bestimmt, ob eine Sequenz Elemente enthält.

Wie für die Dokumentation:

kann nicht scheinen zu finden, alle Unterlagen über sie zu finden.

Alle (? Die meisten) Methoden LINQ-Erweiterung: here

+0

Das ist eine Überladung von Any (und die, die weniger häufig verwendet wird). Ich würde zumindest die häufiger verwendete Überladung in Ihre Antwort aufnehmen. – BradleyDotNET

+0

Meine Antwort enthält bereits ** alle ** Überladungen;) (und alle (die meisten?) Anderen LINQ-Erweiterungsmethoden) – RobIII

4

Enthält über Sorgen, ob die Quellensammlung eine ICollection ist, jede nicht.

Enumerable.Any 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; 
} 

Enumerable.Contains 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); 
} 
+0

Das ist nicht der * einzige * Unterschied, aber es ist einer, den ich nicht kannte! – BradleyDotNET

+2

Schade, dass das OP nicht fragte, was Any() Unterschied zwischen den beiden Methoden ist ... – JJS

Verwandte Themen