过滤数据阅读器中的值

时间:2015-12-10 05:36:45

标签: c# .net sql-server

我从一个表中有两列SqlDataReader返回数据。

还有一个键值对集合,其中键是读者中第一列的不同值。

现在我必须根据集合中可用的键过滤阅读器第二列的值。

例如。

    Column 1      Column 2
      AZ            130
      AS.           140
      AZ.           150
      AS.           160

字典变量将是:Dictionary('AZ', List<string>[])

AZ和AS的区别在于读者。

所以这里AZ将是关键,List将有130和150.列表的大小将是不同键的数量。

1 个答案:

答案 0 :(得分:1)

由于您出于某种原因拒绝显示您的代码,我将提供一般解决方案。

您可以使用reader.Read()简单地遍历行,并将数据收集到Dictionary<string, List<string>>中:

var dict = new Dictionary<string, List<string>>();

using (var reader = yourCommand.ExecuteReader())
{
    while (reader.Read())
    {
        string column1 = (string)reader["Column1"];
        string column2 = (string)reader["Column2"];

        if (!dict.ContainsKey(column1))                     
            dict.Add(column1, new List<string>()); 

        dict[column1].Add(column2); 
    }
}

它将产生字典,它将具有两个键值对:“AZ”,其中List包含“130”和“150”,“AS”包含“140”和“160”。
JSON表示,清晰度:

{
    "AZ": ["130", "150"],
    "AS": ["140", "160"]
}