需要帮助将此查询输出投影到主详细信息对象图中。
查询还需要按主字段分组。
预期的结果是每个主对象都会有详细对象的集合。
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
Master DTO应该有smid,smnm,smorder,moduleid,modulename和一组详细的DTO,其中包含其余的字段。
答案 0 :(得分:1)
您不必更改查询,您可以使用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()
});