从Datatable中提取值并存储到c#中的集合

时间:2012-07-18 03:14:40

标签: c# c#-4.0

我想从数据表中提取一个值并存储到一个集合中。最好的方法是什么?

我的数据表中的行将包含如下数据:

 Row 1          <configuration><Store parameter="Atribs">AB,CD</Store></configuration>

 Row 2          <configuration><Store parameter="Atribs">EF,GH,IJ</Store></configuration>

 ......

我想检索并将值存储在像

这样的集合中
Collection 1 :
AB
CD

Collection 2 :
EF
GH
IJ

Collection ....

3 个答案:

答案 0 :(得分:1)

你说的是一个DataTable,但在你的例子中提供了xml数据,所以我不确定..基本上,这就是你需要做的事情:

var myList = new List<string>();

foreach (DataRow row in dataTable.Rows)
{
    myList.Add(row.Field<string>("myCol"));
}

这样的事情。如果您可以向我们提供有关您的DataTable而不是源xml文件的信息,那么提供更好的示例会更容易。 :)

答案 1 :(得分:1)

你去......

var table = new DataTable();
            var column = new DataColumn("col1");

            table.Columns.Add(column);

            var row = table.NewRow();
            row[0] = @"<configuration><Store parameter=""Atribs"">AB,CD</Store></configuration>";
            table.Rows.Add(row);

            row = table.NewRow();
            row[0] = @"<configuration><Store parameter=""Atribs"">EF,GH,IJ</Store></configuration>";
            table.Rows.Add(row);

            var data = new List<List<string>>();

            foreach (DataRow dRow in table.Rows)
            {
                var temp = new List<string>();
                string xml = dRow.Field<string>("col1");

                var element = XElement.Parse(xml);
                string[] values = element.Descendants("Store").First().Value.Split(',');

                temp.AddRange(values);
                data.Add(temp);
            }

答案 2 :(得分:0)

您可能需要更清楚“数据表”的含义,因为您的示例数据是XML。如果您知道足以从data / xml中获取行:

读取每一行并在内部值上使用String.Split()生成一个字符串数组,该数组可以送入List。

var list = new List<string>(String.Split(",", innerData));

当然,您需要验证内部数据是否包含内容。