需要帮助将此查询输出投影到主细节对象图中。
查询还需要按主字段分组。
预期的结果是每个主对象都将具有详细信息对象的集合。
var q = from ee in db.Pages
from ff in db.SubModules.Where(p => p.submoduleid == ee.submoduleid)
from gg in db.Modules.Where(p => p.moduleid == ff.moduleid)
select new
{
// detail fields
pageid = ee.pageid,
pagename = ee.pagename,
pageurl = ee.pageurl,
pgorder = ee.orderno,
pgstat = ee.status,
//Master fields from here
smid = ff.submoduleid,
smnm = ff.submodulename,
smorder = ff.orderno,
moduleid = gg.moduleid,
modulename = gg.modulename
};
提前谢谢。
编辑
实际场景涉及11个表,非常复杂。我需要一些不会破坏现有查询联接结构的东西。
编辑2
主DTO应该有smid、smnm、smorder、moduleid、modulename和一个将具有其余字段的详细DTO集合。
您不必更改查询,可以使用ToLookup扩展从当前投影(q)创建一个新查询。使用主数据作为查找关键字。
var md = q.ToLookup(ee=> new
{
pageid = ee.pageid,
pagename = ee.pagename,
pageurl = ee.pageurl,
pgorder = ee.orderno,
pgstat = ee.status,
})
.Select(c=> new
{
Master = c.Key,
Details = c.Select(ff=>new
{
smid = ff.submoduleid,
smnm = ff.submodulename,
smorder = ff.orderno,
moduleid = ff.moduleid,
modulename = ff.modulename
}).ToList()
});