Linq和三表分组
我提出了以下LINQ,但我忍不住想,我应该能够在一个查询而不是两个查询中完成这项工作。有人能帮忙吗 其思想是将三个表内部连接起来,然后逐个分组Linq和三表分组,linq,join,linq-group,Linq,Join,Linq Group,我提出了以下LINQ,但我忍不住想,我应该能够在一个查询而不是两个查询中完成这项工作。有人能帮忙吗 其思想是将三个表内部连接起来,然后逐个分组 var q1 = from er in ExportRules join per in PlaceExportRules on er.ExportRulesID equals per.ExportRulesID select new { PlaceID = per.PlaceID, Descri
var q1 = from er in ExportRules
join per in PlaceExportRules on er.ExportRulesID equals per.ExportRulesID
select new
{
PlaceID = per.PlaceID,
Description = er.Description,
Tag = er.TagName,
ExportName = per.ExportName,
ExportAddress = per.ExportAddress
};
var q2 = from p in Places
join rules in q1 on p.PlaceID equals rules.PlaceID into joined2
where joined2.Any()
orderby p.PlaceName
select new {Place = new {p.PlaceID, p.PlaceName}, joined2};
好吧,你可以把一些东西括起来:
var query = from p in Places
join rules from
(from er in ExportRules
join per in PlaceExportRules
on er.ExportRulesID equals per.ExportRulesID
...)
on p.PlaceId equals rules.PlaceId into joined2
where joined2.Any()
orderby p.PlaceName
select new {Place = new {p.PlaceID, p.PlaceName}, joined2};
然而,我个人可能会把它作为两个问题。更清晰,不会影响性能-这不像代码中的第一条语句实际执行查询。您不需要在一个查询中执行查询,所有查询都只执行一次(当您尝试通过ToList获取数据时,隐式地将其转换为一个查询,…)。谢谢@jonskeet,我就这样做了。