从值集

时间:2016-12-07 19:53:11

标签: c# collections datatable datarow

我正在尝试创建一个DataRow,它从硬编码的字符串或字符串变量中获取一些值,并且集合的其余值System.Collections.Generic.Dictionary<string, double>.ValueCollection是特定的。在我下面的尝试中,我会投射到一个阵列,但这不起作用。

DataTable source = new DataTable();

foreach (string sample in GridSource.SampleName)
{
    SampleDictionaries sd = GridSource.Data.Where(x => GridSource.Data.IndexOf(x) == GridSource.SampleName.IndexOf(sample)).First();
    source.Rows.Add(sample, "Average", sd.Avg.Values.ToArray());
    source.Rows.Add("", "Std. Deviation", sd.StdDev.Values.ToArray());
}

上面的代码产生了这个: enter image description here

我明白这里发生了什么。我的问题是:有一种简单的方法可以告诉DataRow&#34;用这个集合填充剩余的列值,&#34;或者我将不得不拿出一些循环去做呢?

2 个答案:

答案 0 :(得分:2)

您可以做的是从datatable.NewRow()方法创建行。然后,您可以让行的items数组等于数据数组:

DataTable source = new DataTable();

foreach (string sample in GridSource.SampleName)
{
    DataRow temp = source.NewRow();
    SampleDictionaries sd = GridSource.Data.Where(x => GridSource.Data.IndexOf(x) == GridSource.SampleName.IndexOf(sample)).First();
    temp.ItemArray = new object[]{sample, "Average"}.Concat(sd.Avg.Values.ToArray());
    source.Rows.Add(temp);
    temp = source.NewRow();
    temp.ItemArray = new object[]{"", "Std. Deviation".Concat(sd.StdDev.Values.ToArray());
}

答案 1 :(得分:0)

在KMoussa的帮助下找到答案!

import random

def randomcolour():
    foo = ['black', 'red']
    for i in range(10):
        mychoice = random.choice(foo)
        print(i, mychoice)
        if mychoice == "black":
            print(i, "black")
        else:
            print(i, "red")

randomcolour()

与他推荐的内容非常相似,但最后却错过了第二次阵容。