2013-04-11 48 views
0

我使用vb.net框架3.5獲得的數據表用vb.net和LINQ的不同元素

我有一個包含下一信息

Page  User  Permission 
Simulator agarza 1 
Buys  agarza 1 
File loads agarza 0 
scenaries agarza 0 
Simulator mjobs 1 
Buys  mjobs 0 
File loads mjobs 1 
scenaries mjobs 1 

我想獲得一個數據集名稱dsData用戶不同的名稱,我試圖做這樣的事情:

Dim query= From row In dsData.Tables(0).AsEnumerable() _ 
       Select row.Field(Of String)("User") Distinct 

在前面的代碼我得到這個錯誤:方法的定義「獨特」是不是在這種情況下訪問。

,然後我想有結果在一個DataTable,做這樣的

Dim dt As DataTable = query.CopyToDataTable() 

別人的東西可以幫我...

+0

如果Distinct isnt avaible指示您嘗試使用它的對象沒有實現EqualityComparer。我瘋狂的猜測是,你需要調用row.Field(OfString)(「User」)。Value或者什麼?儘管我沒有進入VB,所以它可能是我在這裏寫的全部bs。 – CSharpie 2013-04-11 18:18:40

回答

1

嘗試使用基於方法的查詢語法:

Dim names As List(Of String) = dsData.Tables(0).AsEnumerable() _ 
               .Select(Function(r) r.Field(Of String)("User")) _ 
               .Distinct() _ 
               .ToList() 
2

您可以對此使用ToTable(distinct作爲布爾值,ParamArray columnNames As String())方法。

dsData.Tables(0).DefaultView.ToTable(True, "User") 

這將爲您返回不同的用戶。如果需要,您可以添加多個列名稱。

這是msdn文檔。 https://msdn.microsoft.com/en-us/library/wec2b2e6(v=vs.110).aspx

+1

你能否請[編輯]解釋爲什麼這段代碼回答這個問題?僅限代碼答案[阻止](http://meta.stackexchange.com/q/148272/274165),因爲他們沒有教導解決方案。 – 2015-09-29 20:08:18