子列表上的LINQ查询

Tom*_*Tom 0 .net c# linq

我想写一个linq查询,它根据另一个对象内的对象列表检查一个对象.

这里是我想出,这不会产生正确的结果,因为它只是默认为第一个,所以在这两个对象Site 1,并Site 2只显示在Site 1:

filteredData = data
               .where(f => filterInfo.Site.Name.Contains
                               (f.EtaSites.FirstOrDefault().Site.Name)).ToList()
Run Code Online (Sandbox Code Playgroud)

所以,data是一个列表,并且在每个Data对象中都有一个列表EtaSites.每个EtaSite都有一个Site.一个Data对象可以是在一个以上Site,即有两个EtaSites列表中的对象.我的查询应该拉出列表Data中已选择的任何对象Site.因此,对于多个站点的站点,我们应该能够选择Site 1Site 2返回相同的Data对象.

Ale*_*ici 5

试试这个:

filteredData = data
    .Where(f => f.EtaSites
        .Any(a => filterInfo.Site.Name.Contains(a.Site.Name)))
    .ToList();
Run Code Online (Sandbox Code Playgroud)

无论如何,上面的示例允许您仅选择过滤器中的完全匹配项.我相信你应该考虑下面的那个,如果你想在下面使用部分匹配值filterInfo.Site.Name:

filteredData = data
    .Where(f => f.EtaSites
        .Any(a => a.Site.Name.Contains(filterInfo.Site.Name)))
    .ToList();
Run Code Online (Sandbox Code Playgroud)