现在我的代码可以获得在表上运行SQL代码的独特价值。我现在使用存储过程来填充我的Gridview,而不是从表中拉出而不能在表上选择distinct,因为它不在那里。我想知道是否有人可以通过使用gridview的值来指出我正确的方向来创建我的列表。
这是我要切换的当前代码。
connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ToString());
string strSQL = string.Empty;
switch (strColumnName)
{
case "SiteID":
strSQL = @"SELECT distinct SiteID, SiteID FROM Sites ";
break;
case "OrderDate":
strSQL = @"SELECT distinct OrderDate, CONVERT(VARCHAR(11), OrderDate, 106) AS [OrderDate] FROM Sites ";
break;
}
SqlCommand command = new SqlCommand();
command.CommandText = strSQL;
command.Connection = connection;
command.Connection.Open();
SqlDataReader dataReader = command.ExecuteReader(CommandBehavior.CloseConnection);
IList<FilterValueSet> filterValueList = new List<FilterValueSet>();
while (dataReader.Read())
{
filterValueList.Add(new FilterValueSet
{
Id = dataReader[0].ToString(),
Value = dataReader[1].ToString()
});
}
connection.Close();
return filterValueList.ToArray<FilterValueSet>();
答案 0 :(得分:1)
您可以使用Linq Distinct() method来过滤结果,例如
return filterValueList.Distinct(equalityComparer).ToArray();
您需要为FilterValueSet
课程提供equality comparer,以这种方式:
class MyEqualityComparer : EqualityComparer<FilterValueSet>
{
public override int GetHashCode(FilterValueSet obj)
{
return obj.Id.GetHashCode();
}
public override bool Equals(T x, T y)
{
return x.Id.Equals(y.Id);
}
}