转换 DataRow 项目数组的特定元素?
Posted
技术标签:
【中文标题】转换 DataRow 项目数组的特定元素?【英文标题】:Transforming a particular element of DataRow item Array? 【发布时间】:2021-02-04 11:32:28 【问题描述】:目前,应用程序代码直接从 excel 中读取,给我一个 DataTable。它具有带有月份属性的列(数据行的项目数组的最后一个值)。 在 db 中,月份存储为 int 值。
除了使用 LINQ 工具更改/转换每个数据行的 ItemArray 的最后一个值并将月份名称更改为月份编号,然后在运行查询之前形成一个新的数据表之外,我无法想到其他方法。
DataTable dt = obj.ToDataTable();
dt = dt.Rows.Cast<DataRow>().Select(row => row.ItemArray.Select(x => ???)).CopyToDataTable() //stuck here
【问题讨论】:
var results = dt.AsEnumerable().Select(row => row.Field使用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;
我希望这能帮助您解决问题。
【讨论】:
以上是关于转换 DataRow 项目数组的特定元素?的主要内容,如果未能解决你的问题,请参考以下文章
DataSource绑定DataTable.Select()显示system.data.DataRow问题解决的方法
.NET里面datatable.rows[i]可以直接转换为DataRow吗?是否要先new一个DataRow,然后再依次赋值?