Checking if a list of objects contains a property with a specific value
Solution 1:
You can use the Enumerable.Where extension method:
var matches = myList.Where(p => p.Name == nameToExtract);
Returns an IEnumerable<SampleClass>
. Assuming you want a filtered List
, simply call .ToList()
on the above.
By the way, if I were writing the code above today, I'd do the equality check differently, given the complexities of Unicode string handling:
var matches = myList.Where(p => String.Equals(p.Name, nameToExtract, StringComparison.CurrentCulture));
See also
Solution 2:
myList.Where(item=>item.Name == nameToExtract)
Solution 3:
Further to the other answers suggesting LINQ, another alternative in this case would be to use the FindAll
instance method:
List<SampleClass> results = myList.FindAll(x => x.Name == nameToExtract);
Solution 4:
using System.Linq;
list.Where(x=> x.Name == nameToExtract);
Edit: misread question (now all matches)
Solution 5:
list.Any(x=>x.name==string)
Could check any name prop included by list.