0

我正在使用 vb.net 框架 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()

有人可以帮助我吗?...

4

3 回答 3

4

您可以为此使用 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

于 2015-09-29T11:45:34.213 回答
3

语法是

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

至于复制到数据表,请查看Exception using CopyToDataTable with "new {..}" LINQ query的答案。

于 2013-04-11T18:28:21.757 回答
2

尝试使用基于方法的查询语法:

Dim names As List(Of String) = dsData.Tables(0).AsEnumerable() _
                                               .Select(Function(r) r.Field(Of String)("User")) _
                                               .Distinct() _
                                               .ToList()
于 2013-04-11T18:22:44.167 回答