使用Linqsearch对象列表中是否存在值

假设我有一个有FirstName属性的类Customer。 然后我有一个列表。

可以使用LINQ来查找列表中是否有单个语句中的Firstname ='John'的客户。如何?

LINQ定义了一个完美的解决这个问题的扩展方法:

using System.Linq; ... bool has = list.Any(cus => cus.FirstName == "John"); 

确保你引用了System.Core.dll,这就是LINQ所在的地方。

zvolkov的答案是找出是否有这样一个客户的完美的答案。 如果您之后需要使用客户,则可以执行以下操作:

 Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John"); if (customer != null) { // Use customer } 

我知道这不是你在问什么,但我想我会抢先一个后续问题:)(当然,这只能find第一个这样的客户…find所有这些,只是使用正常的where子句。)

关于后续问题的一个select(如何find一个可能有多个名字的客户):

 List<string> names = new List<string>{ "John", "Max", "Pete" }; bool has = customers.Any(cus => names.Contains(cus.FirstName)); 

或者从类似列表的csv中检索客户

 string input = "John,Max,Pete"; List<string> names = input.Split(',').ToList(); customer = customers.FirstOrDefault(cus => names.Contains(cus.FirstName)); 

使用Linq你有很多的可能性,这里没有使用lambdas:

 //assuming list is a List<Customer> or something queryable... var hasJohn = (from customer in list where customer.FirstName == "John" select customer).Any(); 

我发现之前使用的技术.Any()

 var hasJohn = (from customer in list where customer.FirstName == "John" select customer).FirstOrDefault() != null; 
 List<Customer> list = ...; Customer john = list.SingleOrDefault(customer => customer.Firstname == "John"); 

如果没有客户名字为“John”,约翰将为空。

 customerList.Any(x=>x.Firstname == "John") 

试试这个,我希望它能帮助你。

  if (lstCustumers.Any(cus => cus.Firstname == "John")) { //TODO CODE } 

另一种可能性

 if (list.Count(customer => customer.Firstname == "John") > 0) { //bla }