我有一个从excel数据构建的Datable,但有时excel会返回所有字段都为空的行。
我想在不考虑列名的情况下过滤掉这些内容。
我认为Linq可以很好地完成这项任务,但在实现这一点时会遇到一些麻烦。
到目前为止,这是我得到的:
var nonemptyrows = from r in table.AsEnumerable()
from f in r.ItemArray
where f != null
select r;
但它并不完全存在。任何人都能看到我所缺少的东西,或者我是否走错了路线?
提前致谢!
答案 0 :(得分:4)
像这样:
table.AsEnumerable()
.Where(r => r.ItemArray.Any(v => v != null && v != DBNull.Value))
或者,使用查询理解语法:
from r in table.AsEnumerable()
where r.ItemArray.Any(v => v != null && v != DBNull.Value)
答案 1 :(得分:3)
使用表格列清洁一点:
var nonemptyrows = from row in table.AsEnumerable()
where table.Columns.Any(col => !row.IsNull(col))
select row;
答案 2 :(得分:1)
感谢您的回复!我发布之后,下面这个想法打动了我,它对我有用:
var nonemptyrows = from r in table.Rows.Cast<DataRow>() where r.ItemArray.All(c => c != DBNull.Value) select r;