2

我想創建一個方法,我組的一對夫婦領域的實體,然後得到一些其他領域。像這樣:傳遞Func鍵LINQ到實體總和(..)

private async Task<List<KpiGrounping<int>>> GetGrouping(IQueryable<MyEntityType> query, Func<MyEntityType, int> selector) 
    { 
     return await (from item in entity 
       group itemby new 
       { 
        item.DimCountry.Geo, 
        item.DimPlatform.Platform 
       } into x 
       select new MyGrounpingDto 
       { 
        Geo = x.Key.Geo.Trim(), 
        Platform = x.Key.Platform.Trim(), 
        Value = x.Sum(selector) 
       }).ToListAsync(); 
} 

我稱之爲像var foo = GetGrouping(context.MyEntities, x=>x.MyValue);

當我這樣做我得到的錯誤:「內部.NET Framework數據提供錯誤1025」拋出 - 我可以沒有什麼意義。

我還發現,如果我不通過的選擇,而是直接調用總和,像Value = x.Sum(s => s.MyValue);然後正常工作

+3

更改'選擇器參數類型爲'表達式>' –

+2

然後我得到錯誤,項目'x'不包含'總和'的定義。 調用x.AsQueryable()。Sum(selector)然後工作。謝謝! – MartinM

回答

2

您是否嘗試過是這樣做的:

private async Task<List<KpiGrounping<int>>> GetGrouping(IQueryable<MyEntityType> query, Expression<Func<MyEntityType, int>> selector) 
    { 
     return await (from item in entity 
       group itemby new 
       { 
        Geo = item.DimCountry.Geo.Trim(), 
        Platform = item.DimPlatform.Platform.Trim() 
       } into x 
       select new MyGrounpingDto 
       { 
        Geo = x.Key.Geo, 
        Platform = x.Key.Platform, 
        Value = x.Sum(selector) 
       }).ToListAsync(); 
} 
+0

是的,就像@Yacoub Massad建議的一樣。但我必須將值賦值更改爲:x.AsQueryable()。Sum(selector) – MartinM