使用表达式方法的 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)
顺便说一句,Or
和 OrElse
也是如此。在 12 年的 VB.NET 开发中,我几乎从未使用过 And
或 Or
。
【讨论】:
感谢这很好用!您还对使用 OrElse 和 AndAlso 给出了很好的建议。也谢谢你!!!以上是关于使用表达式方法的 LINQ 计数子句中的 if 条件的主要内容,如果未能解决你的问题,请参考以下文章
带有表连接、case 语句、计数、group by 子句的 Linq 查询