假设我有一个类Customer,它有一个属性FirstName。然后我有一个List<Customer>。
LINQ可以用来查找列表中是否有一个客户的Firstname = 'John'在单个语句..如何?
假设我有一个类Customer,它有一个属性FirstName。然后我有一个List<Customer>。
LINQ可以用来查找列表中是否有一个客户的Firstname = 'John'在单个语句..如何?
当前回答
customerList.Any(x=>x.Firstname == "John")
其他回答
兹沃尔科夫的回答是一个完美的答案,以查明是否有这样的客户。如果事后需要使用客户,可以这样做:
Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
// Use customer
}
我知道这不是你想问的,但我想我应该先发制人,提出一个后续问题:(当然,这只会找到第一个这样的客户……要找到所有这些,只需使用普通的where子句。)
下面这个问题(如何找到一个可能有多个名字的客户)的一个选项:
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));
customerList.Any(x=>x.Firstname == "John")
我在发现.Any()之前使用的技术:
var hasJohn = (from customer in list
where customer.FirstName == "John"
select customer).FirstOrDefault() != null;
使用Linq你有很多可能性,这里有一个不使用lambdas:
//assuming list is a List<Customer> or something queryable...
var hasJohn = (from customer in list
where customer.FirstName == "John"
select customer).Any();