.net 在datatable中将一列拆分为两列

tv6aics1  于 2023-05-08  发布在  .NET
关注(0)|答案(1)|浏览(197)

我有一个只有一列的dataTable。我想根据列值拆分成两列
我的数据表看起来像下面这样

Message
--------
PR-111 : test message

输出应如下所示

PRNo    Message
------  -----------
PR-111  test message

我尝试过遍历datatable,并通过如下所示拆分列值来创建行,但这不是有效的方法。

DataTable dt1Copy = new DataTable();

        dt1Copy.Columns.Add("PRNumber", typeof(string));
        dt1Copy.Columns.Add("Message", typeof(string));

        foreach (DataRow drNew in dt1.Rows)
        {
            string message = Convert.ToString(drNew["Message"]);
            var listData = message.Split(':').ToList();

            DataRow drCreated = dt1Copy.NewRow();

            drCreated["PRNumber"] = listData[0];
            drCreated["Message"] = listData[1];

            dt1Copy.Rows.Add(drCreated);

        }

有没有人能提出一个更好的方法来做到这一点?

tyu7yeag

tyu7yeag1#

你可以使用linq来实现。为了使dataTablelinq中可用,它必须是AsEnumerable()

var r = dt1.AsEnumerable().Select(g =>new {PRNumber= g["Message"].ToString().Split(':')[0] ,
                           Message = g["Message"].ToString().Split(':')[1] }).ToList();

相关问题