2013-04-11 53 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