【问题标题】:linq string.contains on field of child object listlinq string.contains on 子对象列表的字段
【发布时间】:2012-01-15 18:51:31
【问题描述】:

如何更改此处的 linq 语句,以便找到包含子字符串为“third”的用户的公司?

目前它仅在搜索完整用户名时有效,即 contains("third user") 因为它正在搜索列表中的匹配项,而不是字符串。

class Company
{
    public Company(List<User> users) { this.Users = users; }
    public List<User> Users { get; set; }
}

class User
{
    public User(string name) { this.Name = name; }
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        List<Company> companies = new List<Company>();
        Company company1 = new Company(new List<User>(){ new User("first user"), new User("second user") });
        Company company2 = new Company(new List<User>() { new User("third user"), new User("fourth user") });
        companies.Add(company1);
        companies.Add(company2);

        companies = companies
                            .Where(company => company.Users.Select(user => user.Name)
                            .Contains("third")).ToList();
    }
}

【问题讨论】:

    标签: string linq list contains


    【解决方案1】:

    您应该在user.Name 上致电string.Contains

    companies = companies
        .Where(company => company.Users.Any(user => user.Name.Contains("third")))
        .ToList();
    

    在线查看:ideone

    【讨论】:

    • 太好了,谢谢。我最初尝试在 user.Name 上调用 Contains,但它不会编译。我现在看到“任何”关键字是缺失的成分,我将继续阅读。
    • 这不是关键字——它是一种扩展方法。请参阅文档:Enumerable.Any
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多