如果LINQ count子句中的条件使用表达式方法



我的数据看起来像:

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

我用计算B的所有非零值

.C = eGroup.Count(Function(x) x.IsBNull = False)

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

我试过

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

但是一旦B为空,我就会得到一个错误。

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

dim query=来自_dataset.DS中的行逐行分组。Team Into eGroup=Group

使用AndAlso而不是And,后者总是同时计算第二个条件,即使第一个条件已经是False。阅读:在VB.NET中And和AndAlso之间有什么区别?

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

顺便说一句,这同样适用于OrOrElse。在VB.NET开发的12年里,我几乎从未使用过AndOr

最新更新