2

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

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

谢谢。

4

2 回答 2

4

在内部表达式中使用Any而不是:Where

var found = contacts.Where(c => c.Emails.Any(e => e.Contains("xxx"))); 
于 2012-09-05T17:22:31.080 回答
0

尝试这个

var found = contacts.Where(c => c.Emails.Where(e => e.Contains("xxx")).Count() > 0);

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

祝你好运 !!

于 2012-09-05T17:22:29.300 回答