我有一个IList<Customer>
,我想找一个姓氏为'smith'的客户。我怎么做? .where看起来可能有用,但我不理解这样做的谓词。或者有更好的方法来搜索列表吗?
谢谢, 杆
答案 0 :(得分:3)
尝试此操作,假设您的IList是customers
对象:
var smiths = customers.Where(c => c.LastName == "Smith");
答案 1 :(得分:2)
如果您想要第一位姓氏为“史密斯”的客户,请使用FirstOrDefault
var customer = customerList.FirstOrDefault(c => c.LastName == "smith");
if (customer != null)
// do code;
如果您希望所有姓氏为“史密斯”的客户,请使用Where
:
var customers = customerList.Where(c => c.LastName == "smith");
foreach(var customer in customers)
// do code;
祝你好运!
答案 2 :(得分:2)
扩展其他帖子:
任何采用谓词的Where()
方法都需要该谓词返回布尔值。该谓词将针对集合的每个元素进行评估,对于谓词返回true
的每个元素,该元素将包含在结果集合中。
请注意,Where()
会在您的方案中返回一个集合(我相信IEnumerable<Customer>
,但我现在没有打开VS来验证)您需要从中获取单个元素使用First()
或Single()
(以及其他)。您还可以对Single()
或Last()
等任何单一方法使用谓词,以避免链接Where(x => blah).Single()
。