【发布时间】:2020-10-29 15:37:52
【问题描述】:
我有两个文本文件,一个标题和一个数据。 Titles 包含第二个标题行,即 Data。我使用以下方法将它们加载到 2 个单独的数据表中:
private static DataTable SwitchColumnHeadersInDatatable(string file)
{
char Delimiter = '#';
string whole_file = System.IO.File.ReadAllText(file);
whole_file = whole_file.Replace('\n', '\r').Replace("\"", "");
string[] Lines = whole_file.Split(new char[] { '\r' },
StringSplitOptions.RemoveEmptyEntries);
List<string[]> FileRows = Lines.Select(line =>
line.Split(new[] { Delimiter }, StringSplitOptions.None)).ToList(); //StringSplitOptions.RemoveEmptyEntries --> To remove nulls
DataTable dt = new DataTable();
dt.Columns.AddRange(FileRows[0].Select(col => new DataColumn() { ColumnName = col }).ToArray());
FileRows.RemoveAt(0);
FileRows.ForEach(row => dt.Rows.Add(row));
return dt;
}
目标是将数据数据表标题行(列名)替换为标题数据表(包含列名)的第一行 我试过这样的想法:
DataTable dtTitle = LoadTextInDatatable(txtLastRepTitle);
DataTable dtData = LoadTextInDatatable(txtLastRepData);
dtTitle.AsEnumerable().Take(1).CopyToDataTable(dtData, LoadOption.OverwriteChanges);
但找不到指定要粘贴到数据表中的行索引(0)的方法。 (并且不要认为是最好的方法)。还需要指定标题上有一些需要删除的额外字段。 ("title1"#"Title2"#"Title3"#"type1"#"type2"#"type3" -> 只需要删除的Title和类型)
【问题讨论】:
-
为什么要两张表?首先将标题读入表格。然后使用第二个文件归档并在索引 1(非零)处删除。
-
感谢#jdweng 的建议。您能否就“带有第二个文件的文件”给出一个简短的提示\示例?恐怕我不明白
-
SwitchColumnHeadersInDatatable与LoadTextInDataTable是什么?你能重新写下“现在我想替换”这似乎是错误的,或者对我来说可能倒退吗? -
更改了方法名称(相同)并重新编写了 NetMage 部分。谢谢