以下查询结果重复类代码。
cboFilterValues.DataSource = (From i In allDetails Select New LookUpItem With {.ItemText = i.ClassCode, .ItemValue = i.ClassCode} Distinct).ToList()
任何人都可以建议我如何为上述查询获得不同的结果。我需要将结果集设置为IList(Of LookupItems)
谢谢
答案 0 :(得分:1)
您的Distinct
无效,因为(大概是 - 您没有提供代码),您没有覆盖Equals
中的GetHashCode
和LookUpItem
方法class,因此使用引用相等性来比较实例。如果您实现这些方法,则Distinct应该起作用:
Public Overrides Function Equals(o As Object) As Boolean
If o Is Nothing OrElse Not Me.GetType().Equals(o.GetType()) Then Return False
Dim other = DirectCast(o, LookUpItem)
Return Me.ItemText = other.ItemText ' or some other fields
End Function
Public Overrides Function GetHashCode() As Integer
Return Me.ItemText.GetHashCode() ' or some other fields
End Function
或者,您可以稍微修改一下您的查询,因为您只使用ClassCode
中的allDetails
属性,并将其放在那里(假设ClassCode
是{{1}使用值相等的其他东西):
String
答案 1 :(得分:0)
cboFilterValues.DataSource = (From x In (From i In allDetails Select i Distinct) Select New LookUpItem With {.ItemText = x.ClassCode, .ItemValue = x.ClassCode}).Tolist
我假设你上面的东西因为select new的一些问题而无法正常工作,如果这是问题就应该绕过它。 添