我有一个数据表,它是使用UNION Select语句从FoxPro表动态生成的。 e.g。
SELECT * FROM x UNION SELECT * FROM y UNION SELECT * FROM Z ORDER By v_alue1
这会生成一个包含大约100行的数据表,每行包含许多字段,其中一个是c_olor。从这个数据表中,我想选择不同的颜色,然后在下拉列表中输出。
我有一个公共类Color,它只有一个属性,我可以将其用作DataTextField和DataValueField用于下拉列表
Public Class Color
Private _c_olor As String
Public Property c_olor() As String
Get
Return _c_olor
End Get
Set(ByVal value As String)
_c_olor = value
End Set
End Property
End Class
我的linq声明是
Dim colorDs = (From o In dt.Rows Select Color = New With {.c_olor = o("c_olor").ToString().Trim(Nothing).ToLower()}).Distinct().ToList()
然而,这永远不会产生明显的颜色。
我搜索并搜索了我要查找的内容,这似乎是产生一组不同结果的方法之一,但是这个和其他方法都不起作用。
我以这种方式获取颜色的原因是,我需要从同一个UNION SELECT数据源中获取各种其他不同的值,因此只需执行一次数据库调用,缓存结果,然后只使用此缓存的数据源来检索所有我不同的价值观。
答案 0 :(得分:1)
我不是VB专家,但似乎你先创建颜色,然后尝试找到不同的颜色
在这种情况下,您需要在颜色类上实现Equals
Dim colorDs =(from o In dt.Rows Select Color = New With {.c_olor = o(“c_olor”)。ToString()。Trim(Nothing)。ToLower()})。Distinct()。ToList( )
或者,您可以先找到disctinct值,然后创建颜色实例
Dim colorDs = (From o In dt.Rows Select o("c_olor").ToString().Trim(Nothing).ToLower()).Distinct().ToList()
应生成唯一字符串颜色列表