使用表达式方法的 LINQ 计数子句中的 if 条件

Posted

技术标签:

【中文标题】使用表达式方法的 LINQ 计数子句中的 if 条件【英文标题】:If condition in LINQ count clause using expression method 【发布时间】:2014-12-07 19:31:36 【问题描述】:

我的数据如下:

A    | B
80   | 80
90   | 10
80   | NULL

我用

计算 B 的所有非 Null 值
.C = eGroup.Count(Function(x) x.IsBNull = False)

但我的表达式中需要另一个条件,因为我只想计算 A >= B 的情况。

我试过了

.C = eGroup.Count(Function(x) x.IsBNull = False And x.A >= x.B)

但一旦 B 为 NULL,我就会收到错误消息。

编辑: 我从数据集中获取数据 在我使用上面的查询之前,我有一个“团队”字段并按团队对我的数据集进行分组:

dim 查询 = 从 _dataset.DS 中的行 逐行分组。Team Into eGroup = Group

【问题讨论】:

eGroup 是什么,IsBNull 是什么(错字?)? 这只是一个错字还是你真的在那个地方有那个右括号? 【参考方案1】:

使用AndAlso 而不是And,即使第一个条件已经是False,后者也总是评估第二个条件。阅读:What is the difference between And and AndAlso in VB.NET?

.C = eGroup.Count(Function(x) x.IsBNull = False AndAlso x.A >= x.B)

顺便说一句,OrOrElse 也是如此。在 12 年的 VB.NET 开发中,我几乎从未使用过 AndOr

【讨论】:

感谢这很好用!您还对使用 OrElse 和 AndAlso 给出了很好的建议。也谢谢你!!!

以上是关于使用表达式方法的 LINQ 计数子句中的 if 条件的主要内容,如果未能解决你的问题,请参考以下文章

带有表连接、case 语句、计数、group by 子句的 Linq 查询

如何在 LINQ where 子句中传递 func 表达式?

Linq基本子句

LINQ 实体 Where 子句不在正确位置

Linq学习之旅——LINQ查询表达式

join 子句中的表达式之一的类型不正确。对“加入”的调用中的类型推断失败。-具有多个条件的 Linq JOIN