字典<string,list <object =“”>&gt;按列名返回列表

时间:2017-12-02 15:03:12

标签: c# wpf dictionary

我有Dictionary个列表,每个List都是从DataColumn创建的。

dict = dt.Columns.Cast<DataColumn>().ToDictionary(c => c.ColumnName, c => dt.AsEnumerable().Select(r => r[c]).ToList());

现在,我如何根据列名称将特定列表中的值传递给另一个变量(或列号是否有效)?

我基本上是在为每个列/列创建XyDataSeries<double, double>(),其中列值等于y&amp; X = 1 + +。

像这样;

var xyData = new XyDataSeries<double, double>();
foreach (var i in dict."columnname")
{
   var one = 1;
   xyData.Append(one++, i);
}

更新

我在最后一行的foreach循环中有一个错误。错误状态'无法从'object'转换为'double''。

XyDataSeries<double,double> xyseries;
var list = dict["ColumnName"];
foreach (var i in list)
{
    Convert.ToDouble(i);
    xyseries.Append(one++, i);
}

我尝试更改Dictionary<string, Dictionary<string, List<object>>> dict;

Dictionary<string, Dictionary<string, List<double>>> dict;

但这引发了另一个错误。我应该注意,数据是在应用程序运行时导入的,因此在运行时列是空的,但是上面的foreach是在复选框检查的事件中。

最终更新

是的我还在学习......这很好用。

foreach (var i in list)
{
    var d = Convert.ToDouble(i);
    xyseries.Append(one++, d);
}

1 个答案:

答案 0 :(得分:3)

您可以使用Keys属性:

foreach (var i in dict.Keys)
{
   // i is key in dictionaty -> ColumnName
   var listByColumnName = dict[i];
}