如何在不使用循环的情况下从数据表中过滤空行?

时间:2011-06-14 07:49:59

标签: c# datatable

我认为数据表可能包含大量行。因此,我无法使用循环迭代和更新数据表。

我尝试过以下代码,

          from row in table.AsEnumerable()
          where table.Columns.Any(col => !row.IsNull(col))
          select row;

但我找不到 Any()的定义。我应该使用任何命名空间来获取Any()吗?

任何正文请告诉我如何更正或建议任何替代解决方案..

4 个答案:

答案 0 :(得分:7)

除了必须使用System.Linq命名空间之外,还需要让它知道元素类型。 DataTable.Columns不是通用集合(它只实现IEnumerable而不是IEnumerable<T>),编译器无法推断出类型。你需要做这样的事情:

from row in table.AsEnumerable()
where table.Columns.Cast<DataColumn>.Any(col => !row.IsNull(col))
select row;

答案 1 :(得分:-1)

Any()方法位于System.Linq命名空间中。该方法位于Queryable

答案 2 :(得分:-1)

如果框架版本大于2

,请使用system.linq命名空间

答案 3 :(得分:-1)

您应该包含以下内容:

using System.Linq;