2014-03-06 46 views
0

我有一個DataTable,其中有一個名爲'UID'的字符串類型的列。檢查所有字符串值是否是DataTable字符串列中的整數

驗證每個值是否爲此列中的整數的最佳方法是什麼?

一種方法是循環通過每個行,如下代碼(dt變量,是填充數據表對象),然後檢查在try catch塊使用integer.Parse UID列中的值,也可以是有一個更容易使用基於LINQ的方法。

if(dt!=null) 
{   
      try 
       { 
        foreach (DataRow row in dt.Rows) 
        { 
         int.Parse(row["UID"].ToString()); 
        } 
       } 
       catch (Exception ex) 
       { 
        throw; 
       } 
    } 

回答

1

您應該使用int.TryParse相反,你可以使用Enumerable.All縮短代碼:

int i; 
bool allInts = table.AsEnumerable() 
    .All(r => int.TryParse(r.Field<string>("UID"), out i)); 
+0

這將如何拋出一個異常,讓我知道一個值不是一個整數?對我來說,重要的是要知道一個無效值,它不是一個整數。 – Sunil

+0

@Sunil:對不起,我編輯了我的答案,添加了'Enumerable.All'類型的返回值。它是一個'bool',它表示是否所有的字段不能被解析爲'int'。 –

+0

好的。謝謝。我會嘗試你的代碼。 – Sunil

0

試試這個

var table = YourTable; 
int invalidDataCount = table.AsEnumerable().Where(d => d.Field<string>("UID").Contains('-')).Count(); 
if (invalidDataCount > 0) { 
    throw new Exception(); 
} 
+0

爲什麼你要計算字段「UID」包含連字符的行? –

+0

我想他只是想檢查是否有非整數? – francorobles

+0

是的,但還有其他字符串不能被解析爲不包含連字符的「int」,例如「ABC」。 –

相關問題