EF LINQ Group By and Sum



我试图用group by和sum进行选择,同时使用LINQ选择其他列,然后我得出这个

var inputList = from c in db.InputItem
join o in db.ItemsDefinition on c.ItemsDefinitionID equals o.ItemsDefinitionID
group c by new { c.ItemsDefinitionID, o.ItemsAName } into g
select new
{
Name = g.Key,
Sum = g.Sum(c => c.Quantity)
};

我要做的是执行这个SQL语句

Select i.ItemsDefinitionID,
ID.ItemsAName, 
sum(Quantity) as avialable
from InputItem i 
Left Outer Join ItemsDefinition ID On i.ItemsDefinitionID=ID.ItemsDefinitionID
group by i.ItemsDefinitionID,ID.ItemsAName

温暖谢谢

你也可以这样做:

var inputList = d.InputItem
.GroupBy(s =>s.ItemsDefinitionID, s.ItemsDefinition.AName)
.Select(g => new
{
ItemsDefinitionID=g.Key.ItemsDefinitionID,
Name = g.Key.AName,
Available= g.Sum(s =>s.Quantity),

})
.ToList();

如果您的关系在模型中正确定义,那么您实际上不需要在EF中进行手动连接。

这个查询就足够了

var result = db.ItemsDefinition.Select(id => new { id.ItemsDefinitionID, 
id.ItemsAName, Quantity = id.Items.Sum(i => i.Quantity) });

要么将SQL生成留给EF,要么停止使用EF。如果你一直担心ORM将生成的查询,那么使用ORM是没有意义的。

相关内容

  • 没有找到相关文章

最新更新