首页 > 解决方案 > 转换 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

标签: c#linqdatatable

解决方案


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;
    }

我希望这将帮助您解决您的问题。


推荐阅读