转换 DataRow 项目数组的特定元素?
Transforming a particular element of DataRow item Array?
目前,应用程序代码直接从 excel 读取给我一个 DataTable。它有包含月份 属性 的列(数据行的项目数组的最后一个值)。
在 db 中,月份存储为 int 值。
除了使用 LINQ 工具 change/transform 每个数据行的 ItemArray 的最后一个值并将 monthname 更改为 monthnumber 然后形成新数据之外,我想不出其他方法 table ,在 运行 查询之前。
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;
}
希望本文能帮助您解决问题。
目前,应用程序代码直接从 excel 读取给我一个 DataTable。它有包含月份 属性 的列(数据行的项目数组的最后一个值)。 在 db 中,月份存储为 int 值。
除了使用 LINQ 工具 change/transform 每个数据行的 ItemArray 的最后一个值并将 monthname 更改为 monthnumber 然后形成新数据之外,我想不出其他方法 table ,在 运行 查询之前。
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;
}
希望本文能帮助您解决问题。