Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.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#_List - Fatal编程技术网

C# 列表按字段包含

C# 列表按字段包含,c#,list,C#,List,我想知道通过字段值测试列表是否包含元素的最佳方法(非LINQ和LINQ) public class A { public B bField; } public class B {} List<A> listA = new List<A> (); B someB = new B(); listA.Contains(someB) 公共A类 { 公共领域; } 公共类B{} List listA=新列表(); B someB=新的B(); listA.Contai

我想知道通过字段值测试列表是否包含元素的最佳方法(非LINQ和LINQ)

public class A
{
    public B bField;
}

public class B {}

List<A> listA = new List<A> ();
B someB = new B();
listA.Contains(someB)
公共A类
{
公共领域;
}
公共类B{}
List listA=新列表();
B someB=新的B();
listA.Contains(someB)
您的意思可能是:

listA.Any( x=> x.bField == someB); 
你可能是说:

listA.Any( x=> x.bField == someB); 
使用

使用


非Linq方法,一个简单的循环:

bool contains = false;
foreach(A a in listA)
{
    if(someB.Equals(a.bField))
    {
        contains = true;
        break;
    }
}
Linq方法,使用
可枚举。Any

contains = listA.Any(a => someB.Equals(a.bField));

请注意,您需要以有意义的方式覆盖
Equals

非Linq方法,一个简单的循环:

bool contains = false;
foreach(A a in listA)
{
    if(someB.Equals(a.bField))
    {
        contains = true;
        break;
    }
}
Linq方法,使用
可枚举。Any

contains = listA.Any(a => someB.Equals(a.bField));

请注意,您需要以一种有意义的方式覆盖
Equals

没有很多方法,谷歌对于一些人来说没有很多方法,谷歌对于一些人来说first@DonBoitnott:为什么不?@zerkms因编辑而退出,但原因是它们不是相同的类型。@DonBoitnott:即使它们是不同的类型-
Equals
接受一个
对象
,那么如何实现它们的comparison@zerkms我回应的是存在的东西,而不是某天可能存在的东西。@DonBoitnott:我已经编辑了我的答案。我忘了在第一个版本中使用
b字段
。@DonBoitnott:为什么不呢?@zerkms因编辑而退出,但原因是它们不是相同的类型。@DonBoitnott:即使它们是不同的类型-
Equals
接受一个
对象
,那么如何实现它们的comparison@zerkms我回应的是存在的东西,而不是某天可能存在的东西。@DonBoitnott:我已经编辑了我的答案。我忘了在第一个版本中使用
b字段