C# 从gridview创建不同值的列表

C# 从gridview创建不同值的列表,c#,asp.net,C#,Asp.net,现在,我有一些代码可以从表上运行SQL代码中获得不同的值。我现在使用一个存储过程来填充我的Gridview,而不是从表中提取,并且不能在表上执行select distinct,因为它不在那里。我想知道是否有人能给我指出正确的方向,通过使用gridview的值来创建我的列表 这是我要切换的当前代码 connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ToStrin

现在,我有一些代码可以从表上运行SQL代码中获得不同的值。我现在使用一个存储过程来填充我的Gridview,而不是从表中提取,并且不能在表上执行select 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>();
connection=newsqlconnection(ConfigurationManager.ConnectionStrings[“ApplicationServices”].ToString());
string strSQL=string.Empty;
开关(strColumnName)
{
案例“SiteID”:
strSQL=@“选择不同的站点ID,站点ID来自站点”;
打破
案例“订单日期”:
strSQL=@“从站点选择不同的OrderDate,将(VARCHAR(11),OrderDate,106)转换为[OrderDate];
打破
}
SqlCommand=newsqlcommand();
command.CommandText=strSQL;
command.Connection=连接;
command.Connection.Open();
SqlDataReader=command.ExecuteReader(CommandBehavior.CloseConnection);
IList filterValueList=新列表();
while(dataReader.Read())
{
添加(新的FilterValueSet
{
Id=dataReader[0]。ToString(),
Value=dataReader[1]。ToString()
});
}
connection.Close();
返回filterValueList.ToArray();
您可以使用Linq过滤结果,如

return filterValueList.Distinct(equalityComparer).ToArray();
您需要为
FilterValueSet
类提供以下内容:

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);
  }
}
类MyEqualityComparer:EqualityComparer
{
公共覆盖int GetHashCode(FilterValueSet obj)
{
返回obj.Id.GetHashCode();
}
公共覆盖布尔等于(TX,TY)
{
返回x.Id等于(y.Id);
}
}

谢谢您的回复。我以前没有使用过linq distinct()方法,也没有使用过质量比较,所以我需要仔细阅读它们。我会让你知道结果的。