2017-08-12 17 views
0

私はこのようなテーブルがある:LINQのグループはvb.net

ここ
PRO_ID  CATEGORY  FINALLY_OK 
200   1    55 
200   1    60 
200   2    65 
200   2    80 
250   1    55 
250   1    60 
250   2    65 
250   2    80 

は私のコードです:

CType(grdQuality.DataSource, DataView).Table.Rows.Cast(Of DataRow) 
    .Select(Function(item) New With {.Ok = CType(item.Item("FINALLY_OK"), Decimal), .PRO_ID = item.Item("PRO_ID"), .Category = item.Item("CATEGORY")}) 
    .GroupBy(Function(item) New With {.PRO_ID = item.PRO_ID, .Category = item.Category}) 
    .Select(Function(item) New With {item.Key.PRO_ID, item.Key.Category, .AVG = item.Average(Function(i) i.Ok)}) 

が、これは何度もgroup byすべての列を返します。正しく動作しない

私のコードに何か問題はありますか?

答えて

1

グループに匿名タイプを使用していますが、これらのプロパティを作成していません。キー ...これは、等価性テストでは使用されないことを意味します。これを試してみてください:

.GroupBy(Function(item) New With { Key .PRO_ID = item.PRO_ID, Key .Category = item.Category}) 

(あなたがC#の匿名型のすべてのプロパティが暗黙的に重要な性質であるとして、C#のサンプル中のものは表示されません。)お時間を

+0

感謝 – AliTheOne