Linq 检查一组 DataRow 中是否有 NULL?

发布于 2024-10-02 23:50:55 字数 226 浏览 2 评论 0原文

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

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

很难说,因为我不能在 lambda 中放置“手表”。

I have a set DataRows and I want to check if any of the fields in any of those rows has a NULL value in it. I came up with this below, but I'm not sure because I'm nesting an ALL.

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

Hard to tell because I can't put a "watch" in lambdas.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

燃情 2024-10-09 23:50:55

实际上,您需要使用 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();

PS

我还添加了 null 检查以更安全,但如果您确定只有 DBNull.Value,您可以将其删除。

Actually you need to use Any (in your code you will return true if All values are null) and AsQueryable() is useless in this case.

bool nullFound = result.AsEnumerable()
                       .Any(o => o.ItemArray.Any(i=>i == DBNull.Value || i == null));

Then, If you need a list of all rows with some value null, just do the following:

var rowsWithNulls = result.AsEnumerable()
                         .Where(o => o.ItemArray.Any(i=>i == DBNull.Value || i == null))
                         .ToList();

P.S.

I also added a null check to be more safe, but if you are sure to have only DBNull.Value, you can remove it.

装纯掩盖桑 2024-10-09 23:50:55

不确定这是否是正确的答案。我对 Linq 也很陌生,但我相信你可以做这样的事情;

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

这将返回一个项目列表,如果没有任何项目,则返回 null。不确定你是否也可以嵌套它,但不明白为什么它不可能

Not sure if this is the correct answer. I'm also rather new to Linq, but i believe you can do something like this;

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

This will return an list of items or null if there aren't any. Not sure if you can also nest it, but don't see why it wouldn't be possible

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文