2013-02-19 34 views
1

我在很多字符串上进行迭代,我想用每个结果填充我的第一个(也是唯一的)3列,然后在新行中重新开始。像:后如何填充数据表中的每个列

A  | B  | C 
------+--------+------ 
"DOG" | "CAT" | "FISH"  
"FDF" | "AAA" | "RRR"  

等....
基本上每一行是“完全”打开新行。

HtmlNodeCollection tables = doc.DocumentNode.SelectNodes("//table"); 
HtmlNodeCollection rows = tables[2].SelectNodes(".//tr"); 

DataTable dataTable = new DataTable(); 
dataTable.Columns.Add("A", typeof(string)); 
dataTable.Columns.Add("B", typeof(string)); 
dataTable.Columns.Add("C", typeof(string)) 
+0

我没有看到你的代码片段甚至会尝试你试图尝试的东西。你能举一个你到目前为止尝试过的例子吗? – 2013-02-19 11:24:15

回答

2

你可以使用Linq的GroupBy到一长串分成3组:

抽样数据:

DataTable table = new DataTable(); 
table.Columns.Add("Col1"); 
table.Columns.Add("Col2"); 
table.Columns.Add("Col3"); 

List<string> longList = Enumerable.Range(1, 99).Select(i => "row " + i).ToList(); 

把长列表分成p三艺:

var groupsWithThree = longList 
    .Select((s, i) => new { Str = s, Index = i }) 
    .GroupBy(x => x.Index/3); 

将它们添加到表:

foreach (var group3 in groupsWithThree) 
    table.Rows.Add(group3.First().Str, group3.ElementAt(1).Str, group3.Last().Str); 

注意,它假定该列表是由三个整除。

4

尝试这样

for (int i = 0; i < rows .Count(); i++) 
      { 

       DataRow datarowObj= dataTable .NewRow(); 
       datarowObj["A"] = yourValue; 
       datarowObj["B"] = yourValue; 
       datarowObj["C"] = yourValue; 
       dataTable.Rows.Add(datarowObj); 
      } 
+0

这不是OP想要的。他有一个很长的名单,说999个字符串。现在他想用333行填充“DataTable”,因为它包含3列。 – 2013-02-19 11:38:32

1
dataTable.Rows.Add(new object[] { "A1", "B1", "C1" }) 

// Alternatively 
object[] arr = new object[] { "A2", "B2", "C2" }; 
dataTable.Rows.Add(arr); 
1

使用DataRoxw进行管理,例如,在您的DataTable中添加一个空的DataRow后: DataRow row = table.Rows[0]; foreach (object item in row.ItemArray) {