2013-12-17 59 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