子列表上的LINQ查询

时间:2013-05-03 12:48:34

标签: c# .net linq

我想编写一个linq查询,该查询根据另一个对象内的对象列表检查对象。

以下是我提出的内容,它不会产生正确的结果,因为它只默认为第一个,因此Site 1Site 2处的对象仅显示在{ {1}}:

Site 1

因此,filteredData = data .where(f => filterInfo.Site.Name.Contains (f.EtaSites.FirstOrDefault().Site.Name)).ToList() 是一个列表,在每个data对象中,都有一个Data列表。每个EtaSites都有一个EtaSiteSite对象可以在多个Data中,即列表中有两个Site个对象。我的查询应该拉出列表中包含所选EtaSites的任何Data对象。因此,对于多个网站的用户,我们应该能够选择SiteSite 1并返回相同的Site 2对象。

1 个答案:

答案 0 :(得分: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();