从网格视图创建不同值的列表
Posted
技术标签:
【中文标题】从网格视图创建不同值的列表【英文标题】:Create a list of distinct values from a gridview 【发布时间】:2014-01-24 19:54:59 【问题描述】:现在我的代码可以通过在表上运行 SQL 代码获得不同的值。我现在使用存储的过程来填充我的 Gridview 而不是从表中提取并且不能在表上选择不同的,因为它不存在。我想知道是否有人可以通过使用 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】:你可以使用 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);
【讨论】:
感谢您的回复。我之前没有使用过 linq distinct() 方法或质量比较,所以我需要阅读它们。我会让你知道结果如何。以上是关于从网格视图创建不同值的列表的主要内容,如果未能解决你的问题,请参考以下文章