2012-09-17 38 views
-2

我有一個數據表,看起來像下面LINQ Groupping和細分電子郵件行編輯

╔═══════════════╦═══════════════╦═══════════════╗ 
║ Product Name ║ Product Price ║ Product Group ║ 
╠═══════════════╬═══════════════╬═══════════════╣ 
║ Skirt Red  ║   99 ║    ║ 
║ Jeans Blue ║   49 ║    ║ 
║ Jeans Black ║   49 ║    ║ 
║ Skirt Blue ║   99 ║    ║ 
║ T-shirt White ║   20 ║    ║ 
║ T-shirt Green ║   20 ║    ║ 
║ Jeans Grey ║   49 ║    ║ 
╚═══════════════╩═══════════════╩═══════════════╝ 

這僅僅是數據表一個例子,真正的表具有更復雜的名稱和顏色,你可以看到有simular現在使用LINQ的不同顏色的產品我想使數據表看起來像下面這樣

╔═══════════════╦═══════════════╦═══════════════╗ 
║ Product Name ║ Product Price ║ Product Group ║ 
╠═══════════════╬═══════════════╬═══════════════╣ 
║ Skirt Red  ║   99 ║    1 ║ 
║ Jeans Blue ║   49 ║    2 ║ 
║ Jeans Black ║   49 ║    2 ║ 
║ Skirt Blue ║   99 ║    1 ║ 
║ T-shirt White ║   20 ║    3 ║ 
║ T-shirt Green ║   20 ║    3 ║ 
║ Jeans Grey ║   49 ║    2 ║ 
╚═══════════════╩═══════════════╩═══════════════╝ 

什麼定義了一個組?價格是一樣的,名字無關。

我是新來的LINQ和我不知道會是什麼做到這一點,最好的方法,我用了大約112000條記錄

所以bascily工作DataTable中,我需要用同樣的價格將產品添加到組並在每個產品旁邊添加一個數字指向組

回答

1

只需按價格對行進行分組,並循環遍歷組,將組中每行的組字段設置爲組編號。

Dim query = 
    From row in table.AsEnumerable 
    Group row By Price = row.Field(Of Integer)("Product Price") Into ProductGroups = Group 
Dim grpNumber = 1 
For Each grp In query 
    For Each row In grp.ProductGroups 
     row.SetField("Product Group", grpNumber) 
    Next 
    grpNumber += 1 
Next 
+0

你可以請檢查這個問題http://stackoverflow.com/questions/12482339/vb-net-linq-group-by-multiple-columns – user1570048