为了简单起见,我有这个课程:
public class Contact
{
public string Name { get; set; }
public string[] Emails { get; set; }
}
我有一系列联系人= IEnumerable<Contact>
我需要找到该集合中的所有联系人,比如说他们的电子邮件地址中有一个文本“xxx”(他们可能有多封电子邮件)。
这样的事情当然不起作用:
var found = contacts.Where(c => c.Emails.Where(e => e.Contains("xxx")));
我想知道如何使用lambda表达式构建这样的查询?
感谢。
答案 0 :(得分:4)
在内部表达式中使用Any
而不是Where
:
var found = contacts.Where(c => c.Emails.Any(e => e.Contains("xxx")));
答案 1 :(得分:0)
试试这个
var found = contacts.Where(c => c.Emails.Where(e => e.Contains("xxx")).Count() > 0);
这将根据指定的电子邮件条件返回所有联系人。
祝你好运!!