尝试从datatable中删除空行时出错

时间:2014-03-14 07:02:30

标签: asp.net vb.net linq

我尝试使用此LINQ代码从数据表中删除空行

 NewDt = NewDt.Rows.Cast(Of DataRow)().
                Where(Function(row) Not row.ItemArray.All(Function(field) TypeOf field Is System.DBNull OrElse String.Compare(TryCast(field, String).Trim(), String.Empty) = 0)).CopyToDataTable()

但它显示错误

Lambda parameter 'row' hides a variable in an enclosing block, a previously defined range variable, or an implicitly declared variable in a query expression.

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

是 - 阅读错误消息。您的方法中已经有一个名为row的变量,因此您需要为lambda表达式中的参数选择一个不同的名称。例如:

NewDt = NewDt.Rows.Cast(Of DataRow)().
              Where(Function(x) Not x.ItemArray.All(
                  Function(field) TypeOf field Is System.DBNull _
                      OrElse TryCast(field, String).Trim() = "").
              CopyToDataTable()