SELECT
c.*,
SUM(h.Harvested) AS Harvested
FROM
Plantings c
LEFT JOIN
Harvests h ON c.Id = h.Id
此代码用于从
Plantings
表中选择所有列以及从 Harvests
表中选择一列(即 Harvested 的总和)。
我的要求是使用LINQ方法重写这段代码。
Plantings
桌子
身份证 | 项目 | 已种植 |
---|---|---|
3 | 胡萝卜 | 2.00 |
4 | 苹果 | 1.00 |
Harvests
桌子
HId | 项目 | 收获 | 身份证 |
---|---|---|---|
1 | 胡萝卜 | 10.00 | 3 |
2 | 苹果 | 20.00 | 4 |
3 | 胡萝卜 | 5.00 | 3 |
这是我尝试过的
IEnumerable DataSource = (from c in _context.Plantings
join h in _context.Harvests on c.Id equals h.Id
select t1).ToList();
预期产出表
身份证 | 项目 | 收获 |
---|---|---|
3 | 胡萝卜 | 15.00 |
4 | 苹果 | 20.00 |
您可以在 LINQ 中创建一个带有子查询的对象。
var data = (
from p in _context.Plantings
join h in _context.Harvests on
select new {
p,
Harvested = _context.Harvests.Where(h => h.Id == p.Id).Sum(h => h.Harvested),
}
).ToList();
通常你会有某种外键关系,那么你就可以这样做
var data = (
from p in _context.Plantings
join h in _context.Harvests on
select new {
p,
Harvested = p.Harvests.Sum(h => h.Harvested),
}
).ToList();