繁体   English   中英

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

[英]Checking if a list of objects contains a property with a specific value

说我有以下代码:

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仅提取具有与我的nameToExtract字符串匹配的Name属性的对象。

如果这个问题非常简单/明显,我会提前道歉。

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

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

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


顺便说一句,如果我今天编写上面的代码,考虑到Unicode字符串处理的复杂性,我会以不同的方式进行相等性检查:

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

编辑:误读问题(现在所有匹配)

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

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

你应该看一下Reflection API。 这是一个元命名空间,包含有关类本身的信息。 您可以询问接口继承和所有内容。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM