none
VB.net如何从DataGridView一列中提取不重复的所有值? RRS feed

  • 问题

  •         Dim dt As DataTable = DataGridViewX1.DataSource
            Dim dr As DataRow() = dt.Select("distinct lithname")

    我不知道这样会不会实现 画线的部分是不对的,不知道该怎么改? 我是想得到DataGridViewX1的lithname一列中所有不重复的值,我对这个并不懂。不知道有没有其他方法,或许我的思路就是错误,我希望得到高手们的详解,我还是一只菜鸟。谢谢!


    永远是一只小菜鸟!
    2011年11月6日 2:50

答案

  • 你好:)

    【方法一】

    建议直接使用SQL语句:select distinct(lithname) as lithname from 数据表名;然后作为参数传入到SqlDataAdapter中填充到DataTable即可。

    【方法二】

    使用LINQ的Distinct方法过滤:

      Dim dt As New DataTable
            Dim r As New Random(Date.Now.Millisecond)
            dt.Columns.Add("Id"GetType(Integer))
            '随机产生10个重复的数字
            For i As Integer = 1 To 11
                dt.Rows.Add(r.Next(16))
            Next

            Dim result = (From row In dt.AsEnumerable
                         Select row.Field(Of Integer)("Id")).Distinct()

            For Each a In result
                Console.WriteLine(a)
            Next

     【方法三】

    使用DataView的ToTable进行字段过滤:

      Dim result = New DataView(dt).ToTable(True"Id") 'Ture:过滤重复字段;后面参数表示
    对谁进行过滤

            For Each a In result.Rows
                Console.WriteLine(a("Id"))
            Next

    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2011年11月7日 1:57
    版主

全部回复

  • 你好:)

    【方法一】

    建议直接使用SQL语句:select distinct(lithname) as lithname from 数据表名;然后作为参数传入到SqlDataAdapter中填充到DataTable即可。

    【方法二】

    使用LINQ的Distinct方法过滤:

      Dim dt As New DataTable
            Dim r As New Random(Date.Now.Millisecond)
            dt.Columns.Add("Id"GetType(Integer))
            '随机产生10个重复的数字
            For i As Integer = 1 To 11
                dt.Rows.Add(r.Next(16))
            Next

            Dim result = (From row In dt.AsEnumerable
                         Select row.Field(Of Integer)("Id")).Distinct()

            For Each a In result
                Console.WriteLine(a)
            Next

     【方法三】

    使用DataView的ToTable进行字段过滤:

      Dim result = New DataView(dt).ToTable(True"Id") 'Ture:过滤重复字段;后面参数表示
    对谁进行过滤

            For Each a In result.Rows
                Console.WriteLine(a("Id"))
            Next

    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2011年11月7日 1:57
    版主
  • 谢谢你啊  我已经通过lis进行累积解决了
    永远是一只小菜鸟!
    2011年11月7日 2:04