【发布时间】:2022-01-22 08:18:27
【问题描述】:
我有 2 个数据表,dt_columns 和 dt_rows; dt_columns 有一个动态列 dt_rows。如何使用dt_columns 中的IEnumerable<string> 检索/选择来自dt_rows 的数据、字段并将其导出到文本文件中?
dt_columns数据表:
| header_name | custom_header_name |
|---|---|
| column1 | custom_header_1 |
| column2 | custom_header_2 |
dt_rows数据表:
| id | column1 | column2 |
|---|---|---|
| 1 | Value1.1 | Value1.2 |
| 2 | Value2.1 | Value2.2 |
文本文件中的预期输出:
| custom_header_1 | custom_header_2 |
|---|---|
| Value1.1 | Value1.2 |
| Value2.1 | Value2.2 |
这是我前进方向的骨架:
StringBuilder sb = new StringBuilder();
DataTable dt_headers = new DataTable();
DataTable dt_rows = new DataTable();
using (var reader = ObjectReader.Create(data)) {
dt_rows.Load(reader);
}
using (var reader = ObjectReader.Create(headers)) {
dt_headers.Load(reader);
}
IEnumerable<string> column_names = dt_headers.Rows.Cast<DataRow>()
.Select(row => (
row["custom_header_name"].ToString() == "" ? row["header_name"].ToString() : row["custom_header_name"].ToString()
));
sb.AppendLine(string.Join(delimeter, column_names));
foreach(DataRow row in dt_rows.Rows) {
IEnumerable<string> fields = row.ItemArray.Select(field =>
String.Concat("\"", field.ToString().Replace("\"", "\"\""), "\""));
sb.AppendLine(string.Join(delimeter, fields));
}
using (StreamWriter output = new StreamWriter(Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "\\" + "resources\\", file_name + ".txt")))
{
output.WriteLine(sb.ToString());
output.Close();
}
【问题讨论】:
-
您遇到了什么问题?
-
@zaggler 我想在
dt_columns中使用IEnumerable<string>迭代dt_rows数据并将数据附加到文本文件中。
标签: c# .net datatable stringbuilder