2017-08-12 42 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