Linq检查一组DataRows中是否有任何NULL?

时间:2010-11-15 18:24:04

标签: linq null

我有一组DataRows,我想检查其中任何行中的任何字段是否都有NULL值。我在下面想出了这个,但我不确定,因为我正在筑巢。

result.AsEnumerable().AsQueryable().All(o => o.ItemArray.All(i=>i == DBNull.Value))

很难说,因为我不能在lambdas中放一个“手表”。

2 个答案:

答案 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。不确定你是否也可以嵌套它,但不明白为什么它不可能