基于.Net语言的SQL Distinct 功能
相信很多朋友都碰到了如下情况:
1.从一张Table取数据是全部取出来的,没有用SQL Distinct功能。
2.现在需求需要过滤掉重复的行,那就只能在代码里面处理相似的功能。
以我自己的例子是这样的,我从一张User表里面Select全部的数据,我现在需要绑定到一个DropDownList(用其中的UserName 和 UserID).
下面是代码片段:
Dim dtUser As New DataTable("User")
Dim arrUser As New ArrayList '用这个只是为了用其中的两个方法,下面会写到
For i As Integer = 0 To dtUser.Rows.Count - 1
arrUser.Add(dtUser.Rows(i)("UserID"))
Next
arrUser.Sort() '这个排序就留给大家了为啥要排序^_^
Dim arrTarget As New ArrayList ' ^_^这个才是我们想要的
For j As Integer = 0 To arrUser.Count -1
If j = 0 Then
arrTarget.Add(arrUser(0))
Else
For k As Integer = 0 To j -1
If arrUser(j).ToString <> arrUser(k).ToString Then
arrTarget.Add(arrUser(j))
Exit For ' 这个很关键,不然就会让你瞪大眼睛,怎么回事^_^
End If
Next
End If
Next
...............省略若干DropDownList的代码,关键是上面嘛
后来有个美女给了另外的方法,别人微软做好的函数为啥不用,这回我瞪大眼睛了
For j As Integer = 0 To arrUser.Count - 1
If arrTarget.Contains(arrUser(j)) = False Then
arrTarget.Add(arrUser(j))
End If
Next
哇!瞧瞧多么简洁(但是呢,我现在不在MS阵营呢,还是上面的思想好点!嘿嘿)
这只是实现了SQL Distinct的功能,现在新的问题出现了,我需要对DropDownList的TextField排序,也就是SQL Order By "UserName" DESC 这样的功能,这个问题留到下次再说啦(因为我也还没想好)