使用Linq搜索对象列表中是否存在值

时间:2009-07-01 19:58:05

标签: c# linq

假设我有一个Customer类,它有一个属性FirstName。然后我有一个List。

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

9 个答案:

答案 0 :(得分:405)

LINQ定义了一种非常适合解决这个问题的扩展方法:

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

确保引用System.Core.dll,这就是LINQ所在的位置。

答案 1 :(得分:96)

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

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

我知道这不是你问的问题,但我认为我会抢先一个后续问题:)(当然,这只会找到第一个这样的客户..要找到所有这些,只需使用正常的where子句。)

答案 2 :(得分:20)

关注问题的一个选项(如何找到可能有任意名字的客户):

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

答案 3 :(得分:10)

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

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

答案 4 :(得分:5)

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

答案 5 :(得分:4)

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

var hasJohn = (from customer in list
      where customer.FirstName == "John"
      select customer).FirstOrDefault() != null;

答案 6 :(得分:3)

List<Customer> list = ...;
Customer john = list.SingleOrDefault(customer => customer.Firstname == "John");
如果没有名字为“John”的客户,

john将为null。

答案 7 :(得分:1)

另一种可能性

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

答案 8 :(得分:0)

试试这个,我希望它可以帮到你。

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