2010-10-19 73 views
0

我有一个数据表,它已经使用UNION Select语句从FoxPro表中动态生成。例如Linq to DataTable not produced Distinct values

SELECT * FROM x UNION SELECT * FROM y UNION SELECT * FROM Z ORDER By v_alue1 

这产生一个约100行的数据表,每行包含许多字段,其中之一是c_olor。从这个数据表中,我想选择不同的颜色,然后在下拉列表中输出。

我有一个公共类颜色,这只是有一个属性,我可以再为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 statment是

Dim colorDs = (From o In dt.Rows Select Color = New With {.c_olor = o("c_olor").ToString().Trim(Nothing).ToLower()}).Distinct().ToList() 

然而,这绝不结果在不同的颜色。

我已经搜索并搜索了我正在寻找的东西,而这似乎是产生一组不同结果的方法之一,但是这个和其他方法都不起作用。

我以这种方式获得颜色的理由是,我需要从同一个UNION SELECT数据源获取各种其他不同的值,因此只需执行一次数据库调用,缓存结果,然后仅使用此缓存数据源检索我所有不同的值。

回答

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() 

应该产生唯一的字符串颜色列表

+0

谢谢。我只是需要额外的方法来解决这个问题。我从数据表中找到了不同的值,然后从该查询中创建了Color实例。 – 2010-10-19 11:32:42