如何在VB LINQ中实现MAX与按NUMERO/100分组的SQL逻辑?
修正后的VB LINQ查询代码
针对你的需求,这里是修正后的VB LINQ代码,既补上了MAL=106的筛选条件,也解决了BC30311类型转换错误:
Dim maxNumbers As List(Of Integer) = ( From row In MyTable Where row.ID_FRUIT = 9 AndAlso row.MAL = 106 Group row By groupKey = row.NUMERO \ 100 Into Group Select Group.Max(Function(r) r.NUMERO) ).ToList()
关键修正点说明:
- 补上缺失的筛选条件:在
Where子句中添加了AndAlso row.MAL = 106,和SQL中的WHERE ID_FRUIT=9 AND MAL=106完全对应。 - 解决类型转换错误:BC30311错误是因为你之前的代码可能返回了匿名类型列表(比如用
Select New { ... }包装结果),而你需要的是List(Of Integer)。这里直接在Select中返回每组的MAX(NUMERO)值,而非匿名类型,调用ToList()时就能直接转换成List(Of Integer)。 - 整数除法匹配SQL逻辑:SQL中
NUMERO/100如果是整数分组(取整),VB中要用\(整数除法运算符),如果是浮点数除法则用/,根据你的分组需求,这里用\更贴合SQL的分组逻辑。
内容的提问来源于stack exchange,提问作者Errias10
相关产品推荐
相关产品推荐

