Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查对象列表是否包含具有特定值的属性_C#_.net_List - Fatal编程技术网

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

C# 检查对象列表是否包含具有特定值的属性,c#,.net,list,C#,.net,List,假设我有以下代码: 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"; class-SampleClass { 公共int

假设我有以下代码:

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";
class-SampleClass
{
公共int Id{get;set;}
公共int名称{get;set;}
}
List myList=新列表();
//列表中充满了对象
...
字符串名称extract=“test”;
所以我的问题是,我可以使用什么列表函数从
myList
中仅提取具有与我的
nameToExtract
字符串匹配的Name属性的对象

如果这个问题真的很简单/明显,我提前表示歉意。

您可以使用扩展方法:

var matches = myList.Where(p => p.Name == nameToExtract);
返回一个
IEnumerable
。假设您想要一个经过过滤的
列表
,只需在上面调用
.ToList()


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

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


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

除了建议LINQ的其他答案之外,本例中的另一种选择是使用实例方法:

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

这会返回所有匹配
nameToExtract
的对象吗?特别是
Name
属性匹配
nameToExtract
的所有对象,yes.thx-是否存在布尔版本,如果它存在或不存在,它只返回true或false?@BKSpurgeon yes,这就是方法。
SampleClass
类中的
Name
属性应该是
string
类型,对吗?
myList.Where(item=>item.Name == nameToExtract)
List<SampleClass> results = myList.FindAll(x => x.Name == nameToExtract);