Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接多个表,然后在linq中分组和求和_Linq - Fatal编程技术网

连接多个表,然后在linq中分组和求和

连接多个表,然后在linq中分组和求和,linq,Linq,如何在LINQ中正确获取此SQL查询? SQL查询: select c.Name, sum(t.value) from Categories c join Items i on c.Id = i.CategoryId join Transactions t on t.ItemId = i.Id where datepart(YEAR, t.CreatedTime) = 2016 and datepart(MONTH, t.CreatedTime) = 2 group by c.

如何在LINQ中正确获取此SQL查询? SQL查询:

select c.Name, sum(t.value)
from Categories c
join Items i on c.Id = i.CategoryId
join Transactions t on t.ItemId = i.Id
where datepart(YEAR, t.CreatedTime) = 2016 
        and datepart(MONTH, t.CreatedTime) = 2
group by c.Name
我在LINQ也尝试过这样做,结果是:

var query = from cat in _context.Categories
                    join item in _context.Items on cat.Id equals item.CategoryId
                    join trans in _context.Transactions on item.Id equals trans.ItemId
                    where trans.CreatedTime.Month == e.RowIndex && trans.CreatedTime.Year == 2016
                    group new { cat.Name, trans.Value } by cat.Name into g
                    select new
                    {
                        Value = g.Sum(entry => entry.Value)
                    };
但它似乎完全错了,除了没有给我返回类别名称之外,它还返回了错误的总和值

我有三张桌子: 具有列Id和列名称的类别 列Id、名称、CategoryId、LastValue、IsIncome、,
具有列Id、ItemId、Value、CreatedTime、IsIncome的事务

您可以使用
g.Key
获取类别名称。除此之外,一切似乎都正常,应该会给您与SQL查询相同的结果。如果你说
var sql=query.ToString(),你会看到什么?哦,好的,对不起,就这些了,g键解决了问题,第二次尝试时它返回正确的答案,我只是感到困惑。:)您可以使用
g.Key
获取类别名称。除此之外,一切似乎都正常,应该会给您与SQL查询相同的结果。如果你说
var sql=query.ToString(),你会看到什么?哦,好的,对不起,就这些了,g键解决了问题,第二次尝试时它返回正确的答案,我只是感到困惑。:)