C# 列表按字段包含
我想知道通过字段值测试列表是否包含元素的最佳方法(非LINQ和LINQ)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
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字段
。