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))
4

4 回答 4

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);
            }
于 2013-02-19T11:24:19.583 回答
2

您可以使用 LinqGroupBy将长列表分成 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();

将长列表分成三部分:

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);

请注意,它假定列表可以被三整除。

于 2013-02-19T11:28:10.333 回答
1
dataTable.Rows.Add(new object[] { "A1", "B1", "C1" })

// Alternatively
object[] arr = new object[] { "A2", "B2", "C2" };
dataTable.Rows.Add(arr);
于 2013-02-19T11:24:25.970 回答
1

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

于 2013-02-19T11:29:10.183 回答