我坚持用Select或SelectMany写一个嵌套查询。
让我们采用传统的嵌套列表:
Sheet has Title fields
SheetDetail has Employee fields
每张工作表都有多个SheetDetails作为主要细节方式。
我想将结果如下所示。
从下面的数据......
Sheet - SheetDetail
"A Sheet"-{"jane","herry","tom"}
"B Sheet"-{"kane","brown","jane"}
"C Sheet"-{"annie","ralph"}
以下结果只有'jane'但保持相同的主 - 细节结构。
Sheet - SheetDetail
"A Sheet"-{"jane"}
"B Sheet"-{"jane"}
我试过
sheet.SelectMany(s => s.SheetDetails.Where(d => d.Description.Contains("jane")));
但是我们可以想象,它会给出错误的结果。
我该怎么做?请帮忙 -
答案 0 :(得分:2)
您可以使用Any
来检查:
Sheet.Where(s => s.SheetDetails.Any(d => d.Description == "jane")))
.Select(s => new Sheet {
Description = s.Description,
SheetDetails = s.SheetDetails.Where(d => d.Description == "jane")
});
答案 1 :(得分:1)
如果你想在结果中只有一个SheetDetail,你可以创建匿名对象,如:
sheet
.Where(s => s.SheetDetails.Any(d => d == "jane"))
.Select(s => new {Sheet = s, SheetDetail == s.SheetDetails.First(d => d == "jane")});