从gridview创建不同值的列表

时间:2014-01-24 19:54:59

标签: c# asp.net

现在我的代码可以获得在表上运行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>();

1 个答案:

答案 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);
  }
}