0

我想编写一个 linq 查询来检查一个对象与另一个对象内的对象列表。

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

filteredData = data
               .where(f => filterInfo.Site.Name.Contains
                               (f.EtaSites.FirstOrDefault().Site.Name)).ToList()

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

4

1 回答 1

5

尝试这个:

filteredData = data
    .Where(f => f.EtaSites
        .Any(a => filterInfo.Site.Name.Contains(a.Site.Name)))
    .ToList();

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

filteredData = data
    .Where(f => f.EtaSites
        .Any(a => a.Site.Name.Contains(filterInfo.Site.Name)))
    .ToList();
于 2013-05-03T13:09:26.830 回答