What's different between Contains and Exists in List<T>?

Vic picture Vic · Oct 19, 2015 · Viewed 14.9k times · Source

I want to know what's different between Contains and Exists in List<T> ?

They can both determine whether an element is in the List<T>.

But what's different between them?

// Create a list of parts.
List<Part> parts = new List<Part>();

// Add parts to the list.
parts.Add(new Part() { PartName = "crank arm", PartId = 1234 });
parts.Add(new Part() { PartName = "chain ring", PartId = 1334 });
parts.Add(new Part() { PartName = "regular seat", PartId = 1434 });
parts.Add(new Part() { PartName = "banana seat", PartId = 1444 });
parts.Add(new Part() { PartName = "cassette", PartId = 1534 });
parts.Add(new Part() { PartName = "shift lever", PartId = 1634 }); ;

// of the Part class, which checks the PartId for equality.
Console.WriteLine("\nContains: Part with Id=1444: {0}",
parts.Contains(new Part { PartId = 1444, PartName = "" }));

// Check if an item with Id 1444 exists.
Console.WriteLine("\nExists: Part with Id=1444: {0}",
                  parts.Exists(x => x.PartId == 1444)); 

// result
// Contains: Part with Id=1444: True 
// Exists: Part with Id=1444: True 

Answer

Shweta Pathak picture Shweta Pathak · Oct 19, 2015

Exists and Contain methods look similar, but have different purposes.

Exists: Determines whether the List<T> contains elements that match the conditions defined by the specified predicate.

Contains: Determines whether an element is in the List<T>.

List<T>.Exists() checks whether any of the items in the list satisfies a condition (specified as a predicate). The "predicate" is just a method that accepts the item to be tested and returns true (match) or false.