c# - 转换 DataRow 项目数组的特定元素?
问题描述
目前,应用程序代码直接从给我一个DataTable的 excel 中读取。它具有带有月份属性的列(数据行的项目数组的最后一个值)。在 db 中,月份存储为 int 值。
除了使用 LINQ 工具更改/转换每个数据行的 ItemArray 的最后一个值并将月份名称更改为月份编号,然后在运行查询之前形成一个新的数据表之外,我无法想到这种方法。
DataTable dt = obj.ToDataTable();
dt = dt.Rows.Cast<DataRow>().Select(row => row.ItemArray.Select(x => ???)).CopyToDataTable() //stuck here
解决方案
foreach
使用循环比使用 LINQ更容易解决问题。
DataTable dataTable = obj.ToDataTable();
// Store the column index of the Month column
var monthColIndex = dataTable.Columns.Count - 1; // Index of Last Column
foreach(var dataRow in dataTable.Rows)
{
var row = dataRow as DataRow;
// Get Month Number from the Month Name column from each row.
var monthNumber = DateTimeFormatInfo.CurrentInfo.MonthNames.ToList().IndexOf(row[monthColIndex].ToString()) + 1;
// Assign monthNumber to the last column value in each row.
row[monthColIndex] = monthNumber;
}
我希望这将帮助您解决您的问题。
推荐阅读
- r - R中的平均相同值
- python - n 个可区分的项目放入 k 个不可区分的盒子中
- java-8 - 根据某些条件停止/完成循环的 CompletableFuture
- jenkins - Jenkins 共享库 - 加载变量
- sql-server - 比较 2 个输入数字是否在 2 列范围内
- r - 如何在R中的单个列表中添加两个元素
- elasticsearch - 在 Logstash HTTP 输入中,如何将错误发送给客户端而不是什么都不发送?
- spring-boot - Spring boot Elastic Search与MongoDB集成如何实现对非结构化数据的搜索
- microsoft-graph-api - Microsoft Graph Java SDK 上的列表事件 API 调用不适用于 @outlook.com 域
- python - 如何从Entry返回值,同时销毁寡妇?