如何将单列数据表的管道分隔(|)值拆分为多列

时间:2012-08-08 10:06:59

标签: c# .net

我有一个数据表dtRecords。它包含一列Token,其中包含管道(|)分隔值

e.g。

234|82|91
235|81|90
237|83|95
238|85|98

我希望另一个表中的输出说明dtCompleteRecords,其中3列a, b, c具有Token dtRecords列{{1}}的相应值。

帮助将不胜感激

4 个答案:

答案 0 :(得分:6)

假设你有字符串:

string str = "234|82|91 235|81|90 237|83|95 238|85|98"

使用string.Split获取字符串元素数组。

string[] strArray = str.Split('|');

稍后您可以在数据表中插入这些值。

答案 1 :(得分:4)

试试这个:

 var dtCompleteRecords = new DataTable("CompleteRecords");
 dtCompleteRecords.Columns.Add(new DataColumn("a", typeof(string)));
 dtCompleteRecords.Columns.Add(new DataColumn("b", typeof(string)));
 dtCompleteRecords.Columns.Add(new DataColumn("c", typeof(string)));


dtRecords.AsEnumerable()
    .Select(row => row["Token"].ToString().Split('|'))
    .ToList()
    .ForEach(array => dtCompleteRecords.Rows.Add(array));

答案 2 :(得分:2)

您正在寻找适用于字符串的Split('|')方法。所以例如myCell.Text.Split('|')

答案 3 :(得分:0)

这将有效

        DataTable dt = yourdatatable;
        DataTable dtable2 = new DataTable();
        dtable2.Columns.Add("column1", System.Type.GetType("System.String"));
        dtable2.Columns.Add("column2", System.Type.GetType("System.String"));
        dtable2.Columns.Add("column3", System.Type.GetType("System.String"));
        string value = "";
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            value = dt.Rows[0][i].ToString();
            string[] splitPipeValue = value.Split('|');
            DataRow drow = dtable2.NewRow();
            drow[0] = splitPipeValue[0].ToString();
            drow[1] = splitPipeValue[1].ToString();
            drow[2] = splitPipeValue[2].ToString();
            dtable2.Rows.Add(drow);
        }
    }