【问题标题】:How to create this lambda expression?如何创建这个 lambda 表达式?
【发布时间】:2012-09-05 17:20:53
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: asp.net-mvc linq lambda


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      试试这个

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

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

      祝你好运!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多