我正在迭代很多字符串,我希望用每个结果填充我的第一个(也是唯一的)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 :(得分: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);
}
答案 1 :(得分: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();
将长列表分为三部分:
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整除。
答案 2 :(得分:1)
dataTable.Rows.Add(new object[] { "A1", "B1", "C1" })
// Alternatively
object[] arr = new object[] { "A2", "B2", "C2" };
dataTable.Rows.Add(arr);
答案 3 :(得分:1)
例如,在向DataTable添加空DataRow后使用DataRoxw进行管理:
DataRow row = table.Rows[0];
foreach (object item in row.ItemArray)
{
?