如何创建这个lambda表达式?

时间:2012-09-05 17:20:53

标签: asp.net-mvc linq lambda

为了简单起见,我有这个课程:

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表达式构建这样的查询?

感谢。

2 个答案:

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

这将根据指定的电子邮件条件返回所有联系人。

祝你好运!!