Linq查询问题

时间:2010-05-07 13:29:23

标签: c# linq linq-to-sql

我有以下信息

var details = Details.Where(d => d.isActive);

我想查询具有FK到Authorizations的另一个表Details,并获取details对象中包含的授权总和。 detailFundCode

  

详细信息(1对多)授权

看起来很简单,但是我遇到了一些麻烦。

以下是我目前的情况:

var account = (from sumOfAuths in Authorizations
               where details.Contains(sumOfAuths.Details)
                     && sumOfAuths.RequestStatusId == 2
               group sumOfAuths by new { sumOfAuths.Detail, sumOfAuths.FundCode } into child
               select new { 
                ....
                Amount = child.Amount 
               }).Sum()

问题是在.Sum()函数内部我有对象集合而不是1.所以我不能正确地汇总金额。

2 个答案:

答案 0 :(得分:3)

通常,您可以指定要合计的内容:

.Sum(x => x.Amount)

在群组中,您可以使用嵌套总和:

.Sum(x => x.Sum(y => y.Amount));

答案 1 :(得分:2)

我相信这个查询会产生你想要的东西:

            var account = from c in Authorizations
                      where details.Contains(c.Details) && c.RequestStatusId == 2
                      group c by new { c.Detail, c.FundCode } into g
                      select new { Key = g.Key, Sum = g.Sum(x => x.Amount) };