选择dataTable中不存在的数据行

时间:2013-12-17 14:30:46

标签: c# asp.net

我正在尝试这样做:

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

在我的情况下,我不确定数据表中是否存在TEMPLATE_ID=1或者不存在如果数据行不退出它会在转移到下一个语句之前抛出异常我怎样才能避免抛出的异常?我应该使用try catch吗?

2 个答案:

答案 0 :(得分:2)

dt.Select("TEMPLATE_ID=1")

已经返回一个DataRows数组。因此,您可以检查是否有超过零行:

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

答案 1 :(得分:0)

您可以使用LINQ To DatTable/DataSet

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

如果找不到ID,这将返回null以防万一。

(您可以将Field扩展方法中的类型替换为数据库中的内容。)

稍后您可以获得代码:

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