2012-08-08 51 views
0

我有一个数据表dtRecords。它包含列Token,其中包含铺管(|)分隔值如何管分隔分裂(|)数据表中的一列的数值为多列

例如

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

我想在另一个表中的输出说dtCompleteRecords 3列a, b, c具有dtRecordsToken柱的相应的值。

帮助,将不胜感激

+2

使用string.split( “|”) ,将解决你的问题 – akhil 2012-08-08 10:09:40

+0

请问您的字符串包含换行? “编辑后” – Habib 2012-08-08 10:12:24

+1

你有没有尝试过吗? – akhil 2012-08-08 10:15:12

回答

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)); 
+0

这太棒了。谢谢! – 2012-08-08 11:04:59

2

您正在寻找Split('|')方法,即应用到字符串。所以例如myCell.Text.Split('|')

6

假设你有串:

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

使用string.Split得到字符串元素的数组。

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

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

+1

仅供参考,原始问题的数据分为四行,但没有正确标记为代码。我编辑它以显示,因为我认为OP的意图。不确定你是否想相应地编辑你的答案(尽管答案的本质不变)。 – Chris 2012-08-08 10:21:14

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); 
     } 
    } 
+0

它的工作太..但它需要太多时间我喜欢,因为我有我的数据库中的一百万记录。尽管如此,感谢您的帮助。 – 2012-08-08 11:04:18

相关问题