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

时间:2014-10-13 09:16:34

标签: vb.net linq

我的数据如下:

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为NULL,我就会收到错误。

编辑: 我从数据集中获取数据 我有一个领域" Teams"并按团队分组我的数据集,因为我使用上面的查询:

dim query =来自_dataset.DS中的行 逐行分组。团队进入eGroup = Group

1 个答案:

答案 0 :(得分:3)

使用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。在VB.NET开发的12年里,我几乎没有使用AndOr