C# Linq嵌套选择查询和结果与所选项具有相同的结构
我努力用Select或SelectMany编写一个嵌套查询 让我们以传统的嵌套列表为例:C# Linq嵌套选择查询和结果与所选项具有相同的结构,c#,linq,entity-framework,C#,Linq,Entity Framework,我努力用Select或SelectMany编写一个嵌套查询 让我们以传统的嵌套列表为例: Sheet has Title fields SheetDetail has Employee fields 每个图纸都有多个作为主详图方式的图纸详图 我想得出如下结果 从下面的数据 Sheet - SheetDetail "A Sheet"-{"jane","herry","tom"} "B Sheet"-{"kane","brown","jane"} "C Sheet"-{"annie","ral
Sheet has Title fields
SheetDetail has Employee fields
每个图纸都有多个作为主详图方式的图纸详图
我想得出如下结果
从下面的数据
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")));
但正如我们所能想象的,它给出了错误的结果
我怎样才能做到?请提供帮助-您可以使用
任何
检查:
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")
});
您可以使用
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")
});
如果希望结果中只有一个SheetDetail,可以创建匿名对象,如:
sheet
.Where(s => s.SheetDetails.Any(d => d == "jane"))
.Select(s => new {Sheet = s, SheetDetail == s.SheetDetails.First(d => d == "jane")});
如果希望结果中只有一个SheetDetail,可以创建匿名对象,如:
sheet
.Where(s => s.SheetDetails.Any(d => d == "jane"))
.Select(s => new {Sheet = s, SheetDetail == s.SheetDetails.First(d => d == "jane")});
SheetDetail有Employee字段
哪一个是字符串?{“jane”、“herry”、“tom”}是一条记录的描述还是三条记录的描述?你需要进一步澄清你的观点question@IlyaIvanov//是的,为了简单起见,这里只有一个字符串。@CuongLe//谢谢您的关注。是的,三条记录,如List,您可以定义您的类和预期结果吗?SheetDetail有Employee字段
哪一条是字符串?{“jane”、“herry”、“tom”}是一条记录或三条记录的描述?你需要进一步澄清你的观点question@IlyaIvanov//是的,为了简单起见,这里只有一个字符串。@CuongLe//谢谢您的关注。是的,三张像List这样的记录你能定义你的课程和预期结果吗?即使我不能选择你的作为答案,但我支持你的。谢谢你的好意。即使我不能选择你的答案,但我还是投你的票。谢谢你的好意。