EntityFramework IQueryable GroupBy多列和捕获总和

时间:2014-12-18 00:28:43

标签: c# linq entity-framework grouping iqueryable

我正在尝试按多列分组,然后将所有记录的Amount字段汇总到一条记录中。

例如,我有三个库存记录,它们具有相同的位置,类型和产品。我想只返回一个库存记录(EFModel.Inventory的一个实例),但是它具有来自所有三个记录的金额之和。但是,我还不想执行查询!请检查下面的代码以获得一些澄清。有没有一种简单的方法可以做到这一点?

        IQueryable<EFModel.Inventory> query = GetInventoryView();
        if (searchParameters.GroupByLocation)
        {
            query = from inv in query
                    group inv by new { inv.LocationID, inv.LocationType, inv.ProductID }
                    into groupedInv
                    select groupedInv.First();
        }

        // Now, perform filtering, sorting, paging and etc. on the query

非常感谢提前!

1 个答案:

答案 0 :(得分:0)

你考虑过这样的事情:

其中query是您的初始集合。

IQueryable<EFModel.Inventory> query = GetInventoryView();
 if (searchParameters.GroupByLocation)
        {

var model = query.GroupBy((group => 
                                 new { LocationID = group.LocationID, 
                                       LocationType = group.LocationType, 
                                       ProductID = group.ProductID 
                                     }
                        )
                 .Select(select => 
                 new <returning object>() { 
                     total = select.Sum(total => total.{Amount Property}), 
                     LocationID = select.Key.LocationID, 
                     ...., 
                     //other properties here  
                     }); 
  //do other stuff here 

}

这就是我做类似的事情。假设我已正确阅读了您的问题。

任何问题都让我知道。 (代码没有被检查,但应该有效)