检查对象列表是否包含具有特定值的属性

说我有以下代码:

class SampleClass { public int Id {get; set;} public int Name {get; set;} } List<SampleClass> myList = new List<SampleClass>(); //list is filled with objects ... string nameToExtract = "test"; 

所以我的问题是我可以使用什么List函数从myList提取具有与我的nameToExtractstring匹配的Name属性的对象。

如果这个问题真的很简单/明显,我很抱歉。

您可以使用Enumerable.Where扩展方法:

 var matches = myList.Where(p => p.Name == nameToExtract); 

返回一个IEnumerable<SampleClass> 。 假设你想要一个过滤的List ,只需在上面调用.ToList()即可。


顺便说一下,如果我今天编写代码,考虑到Unicodestring处理的复杂性,我会进行不同的等式检查:

 var matches = myList.Where(p => String.Equals(p.Name, nameToExtract, StringComparison.CurrentCulture)); 

也可以看看

 myList.Where(item=>item.Name == nameToExtract) 
 using System.Linq; list.Where(x=> x.Name == nameToExtract); 

编辑:误读问题(现在所有比赛)

除了build议LINQ的其他答案之外,在这种情况下的另一种select是使用FindAll实例方法:

 List<SampleClass> results = myList.FindAll(x => x.Name == nameToExtract); 

你应该看看Reflection API。 这是一个带有关于类本身信息的元名称空间。 你可以问接口inheritance和一切。

http://msdn.microsoft.com/en-us/library/z919e8tw%28v=vs.80%29.aspx