2013-12-17 60 views
0

存在,我試圖做這樣的數據行:如果TEMPLATE_ID=1存在選擇不DataTable中

DataRow DefaultTemplateRow = dt.Select("TEMPLATE_ID=1").CopyToDataTable().Rows[0]; 
if (DefaultTemplateRow == null) 
{ 
    dt.Rows.Add(0, 1, "Default", "", "By total", "1", "1"); 
} 
在我的情況

我不知道或沒有在DataTable中,如果數據行不退出它在移動到下一個語句之前拋出異常我怎樣才能避免拋出的異常?我應該使用try catch嗎?

回答

0

您可以使用LINQ To DatTable/DataSet

DataRow DefaultTemplateRow = 
        dt.AsEnumerable() 
        .FirstOrDefault(r => r.Field<int>("TEMPLATE_ID") == 1); 

這將在情況下返回null,如果沒有找到ID。

(您可以替代在Field擴展方法類型你在數據庫中有哪些。)

以後你可以有你的代碼:

if (DefaultTemplateRow == null) 
{ 
    dt.Rows.Add(0, 1, "Default", "", "By total", "1", "1"); 
} 
2
dt.Select("TEMPLATE_ID=1") 

已經返回一個DataRows數組。所以,你可以檢查是否有超過零行本:

DataRow[] DefaultTemplateRow = dt.Select("TEMPLATE_ID=1"); 
if (DefaultTemplateRow.Length > 0) 
... 
+1

+1,因爲沒有需要'CopyToDataTable' – Habib