【发布时间】:2016-01-23 04:08:06
【问题描述】:
如何将此 SQL 查询转换为 LINQ?
SELECT eg.Name Name, sum(bi.PlannedAmount) Amount
FROM BudgetItem bi, Expense e, ExpenseGroup eg
WHERE Discriminator = 'ExpenseItem' AND
bi.ExpenseId = e.Id AND
e.ExpenseGroupId = eg.id AND
bi.MonthlyBudgetId = 1
GROUP BY eg.Name
到目前为止,我想出了这一行:
var result = context
.ExpenseGroups
.GroupBy(eg => eg.Id, (s) => new { Name = s.Name, Amount = s.Expenses.SelectMany(e => e.Items).Sum(i => i.PlannedAmount) })
.ToList();
但我仍然无法弄清楚要使用什么表达式来添加“bi.MonthlyBudgetItem = 1”。
有人有想法吗?
编辑#1: 我忘了提及实体之间的关系。每个ExpenseGroup都有很多Expenses,每个Expense都有很多BudgetItems。
所以,ExpenseGroup => 费用 => BudgetItems
编辑#2: 我正在使用实体框架,每个 ExpenseGroup 都有一个 Expense 对象的集合(每个 Expense 都有一个 ExpenseGroup 对象),每个 Expense 都有一个 BudgetItem 对象的集合(每个 BudgetItem 对象都有一个 Expense 对象)。
【问题讨论】:
标签: c# sql linq entity-framework-6