我正在使用vb.net framework 3.5
我有一个数据集名称dsData
,其中包含下一个信息
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
我想获得用户的不同名称,我正在尝试这样做:
Dim query= From row In dsData.Tables(0).AsEnumerable() _
Select row.Field(Of String)("User") Distinct
在前面的代码中我收到此错误:在此上下文中无法访问方法'Distinct'的定义。
然后我想将结果放在数据表中,做这样的事情
Dim dt As DataTable = query.CopyToDataTable()
有人可以帮助我吗?...
答案 0 :(得分:2)
尝试使用基于方法的查询语法:
Dim names As List(Of String) = dsData.Tables(0).AsEnumerable() _
.Select(Function(r) r.Field(Of String)("User")) _
.Distinct() _
.ToList()
答案 1 :(得分:2)
语法是
(From row In dsData.Tables(0).AsEnumerable() _
Select row.Field(Of String)("User")).Distinct()
关于复制到数据表,请查看Exception using CopyToDataTable with "new {..}" LINQ query的答案。
答案 2 :(得分:2)
您可以使用ToTable(distinct As Boolean,ParamArray columnNames As String())方法。
dsData.Tables(0).DefaultView.ToTable(True, "User")
这将为您返回不同的用户。如果需要,可以添加多个列名称。
这是msdn文档。 https://msdn.microsoft.com/en-us/library/wec2b2e6(v=vs.110).aspx