从网格视图创建不同值的列表

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() 方法或质量比较,所以我需要阅读它们。我会让你知道结果如何。

以上是关于从网格视图创建不同值的列表的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:从网格视图横向滚动的列表视图过渡

如何在颤动中将格式从列表视图更改为网格视图?

如何使用按钮从集合视图(网格视图)切换到表格视图(列表视图)?

如何使用 json API 在列表视图中创建网格视图

带网格标题的Android网格视图

使用复选框列修复数据网格视图中的 FormatException