2011-07-27 61 views
2

我为这个新手问题表示歉意,但我正在寻找一个简单的解决方案。
我想写一个函数,将返回一个数据表。
像这样:检查数据表中的逗号使用逗号

public static DataTable DataTableCommaReplce(DataTable dt){..} 

的功能将在数据表检查每个数据。
如果数据包含一个或多个逗号,该函数将使用双引号将该数据。
例如:

you,me⇒"you,me" 

什么是写这个功能的最佳方式?
任何机构可以帮助我吗?


我曾与此代码解决,但我希望有更多的简单的解决方案。
如果可能,我不想循环。

public static DataTable DataTableCommaReplce(DataTable dt) 
     { 
      int col = dt.Columns.Count; 
      foreach (DataRow dr in dt.Rows) 
      { 
       for (int i = 0; i < col; i++) 
       { 
        if (dr[i].ToString().IndexOf(",") > 0) 
        { 
         dr[i] = "\"" + dr[i].ToString() + "\""; 
        } 
       } 
      } 
      return dt; 
     } 
+0

什么是 “数据表中的每一个数据”,你的意思是?是否每个单元格或每一行?请在你的问题中给一些澄清。 –

+0

是的,谢谢你的关注,我的意思是每个细胞。 – nnnn

+0

如果某个字段已包含双引号,则可能还需要将这些双引号加倍。例如'jack'TOUGH GUY“jones'=>'jack”“TOUGH GUY”“jones' –

回答

2

这应该工作:

public static DataTable DataTableCommaReplce(DataTable dt) { 
    foreach (DataRow row in dt.Rows) { 
     foreach (DataColumn col in dt.Columns) { 
      string s = row[col] as string; 
      if (s != null) { 
       if (s.Contains(',')) { 
        row[col] = string.Format("\"{0}\"", s); 
       } 
      } 
     } 
    } 
    return dt; 
} 
0

尝试下面的代码部分。希望它会有所帮助。

DataTable Tb = new DataTable(); 
for (int i = 0; i < Tb.Columns.Count; i++) 
{ 
    for (int j = 0; j < Tb.Rows.Count; j++) 
    { 

     if (Tb.Rows[j][i] != DBNull.Value) 
     { 
     if (Tb.Rows[j][i].ToString().IndexOf(',') != -1) 
     { 
      Tb.Rows[j][i] = "\"" + Tb.Rows[j][i].ToString() + "\""; 
      } 
     } 
    } 
} 
+0

*可以使用* Convert.ToString(Tb.Rows [j] [i])==”你,我“*只是为了安全。我认为如果单元格的值为null,ToString()会抛出一个异常。 Convert.ToString()只是将null转换为空字符串。 –