使用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 }