我想写一个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 1或Site 2返回相同的Data对象.
试试这个:
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)
| 归档时间: |
|
| 查看次数: |
733 次 |
| 最近记录: |