如何使用 LINQ 获取一个表中的所有列以及另一个表中的一列?

问题描述 投票:0回答:1
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
sql sql-server linq asp.net-core
1个回答
0
投票

您可以在 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();
© www.soinside.com 2019 - 2024. All rights reserved.