1

私は多くの文字列を繰り返し処理しており、最初の(そして唯一の)3列に各結果を入力してから、新しい行で再開したいと考えています。お気に入り:

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

AND SO ON ....
基本的に、各行が「いっぱい」になった後、新しい行を開きます。

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

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

長いリストを3つの部分にグループ化します。

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

リストは3で割り切れることを前提としていることに注意してください。

于 2013-02-19T11:28:10.333 に答える
1

たとえば、DataTableに空のDataRowを追加した後、DataRoxwで管理します DataRow row = table.Rows[0]; foreach (object item in row.ItemArray) {

于 2013-02-19T11:29:10.183 に答える
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 に答える