我有一组DataRows,我想检查其中任何行中的任何字段是否都有NULL值。我在下面想出了这个,但我不确定,因为我正在筑巢。
result.AsEnumerable().AsQueryable().All(o => o.ItemArray.All(i=>i == DBNull.Value))
很难说,因为我不能在lambdas中放一个“手表”。
答案 0 :(得分:1)
实际上你需要使用Any
(在你的代码中,如果所有值都为null,你将返回true)并且AsQueryable()
在这种情况下是无用的。
bool nullFound = result.AsEnumerable()
.Any(o => o.ItemArray.Any(i=>i == DBNull.Value || i == null));
然后,如果您需要一个值为null的所有行的列表,请执行以下操作:
var rowsWithNulls = result.AsEnumerable()
.Where(o => o.ItemArray.Any(i=>i == DBNull.Value || i == null))
.ToList();
P.S。
我还添加了null
支票以确保更安全,但如果您确定只有DBNull.Value
,则可以将其删除。
答案 1 :(得分:0)
不确定这是否是正确答案。我对Linq也很新,但我相信你可以做这样的事情;
result.AsEnumerable().AsQueryable().SingleOrDefault(o => o.ItemArray.All(i=>i == DBNull.Value))
这将返回一个项目列表,如果没有,则返回null。不确定你是否也可以嵌套它,但不明白为什么它不可能