LINQ到实体整数除法不正确?
我正在尝试进行一些分区,将列表条目划分为6个月的块。使用此LINQ to Entities查询,我得到的结果表明未进行整数除法:LINQ到实体整数除法不正确?,linq,c#-4.0,linq-to-entities,Linq,C# 4.0,Linq To Entities,我正在尝试进行一些分区,将列表条目划分为6个月的块。使用此LINQ to Entities查询,我得到的结果表明未进行整数除法: from e in enrollments let AgeInHalfYears = e.AgeMonths / 6 select new { e.AgeMonths , AgeInHalfYears, AgeFloor = ((int)AgeInHalfYears) * 6 } 我的结果是: AgeMonths A
from e in enrollments
let AgeInHalfYears = e.AgeMonths / 6
select new { e.AgeMonths ,
AgeInHalfYears,
AgeFloor = ((int)AgeInHalfYears) * 6 }
我的结果是:
AgeMonths AgeInHalfYears AgeFloor
68 11 68
41 7 41
34 6 34
在最后一篇专栏文章中,我预计会有66、36和30篇文章
我把LINQ改写得非常简单
AgeFloor=e.AgeMonths-(e.AgeMonths%6)
但我仍然很好奇为什么除法运算显然是浮点运算,即使有(int)转换。。。我没有料到。实体框架在生成SQL时可能会忽略您的强制转换 基于LINQ的SQL生成器很少(如果有的话)是完美的。
特别是,.Net的类型系统与SQL的类型系统差别很大,它们可能会忽略所有类型转换
尝试调用
Math.Floor
。实体框架在生成SQL时可能会忽略您的强制转换
基于LINQ的SQL生成器很少(如果有的话)是完美的。特别是,.Net的类型系统与SQL的类型系统差别很大,它们可能会忽略所有类型转换 尝试调用
Math.Floor