2

2つのフィールドにエンティティをグループ化し、別のフィールドを取得するメソッドを作成しようとしています。 「内部の.NET Frameworkデータプロバイダエラー1025」:私はこれを行うと、私はエラーを取得var foo = GetGrouping(context.MyEntities, x=>x.MyValue);FuncからLinqへのEntities Sum(..)

のように呼び出す

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(); 
} 

:そうのように投げられた - 私はほとんど感知できない。

私も私はValue = x.Sum(s => s.MyValue);のように、セレクタを渡し、代わりに直接合計を呼び出すいけない場合、それは細かい

+3

変更 'セレクタのパラメータ型を 'Expression >'に設定します。 –

+2

次に、項目 'x'に 'Sum'の定義が含まれていないというエラーが表示されます。 x.AsQueryable()を呼び出します。次にSum(セレクタ)が機能します。ありがとう! – 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(セレクタ) – MartinM