LINQ到实体整数除法不正确?

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

我正在尝试进行一些分区,将列表条目划分为6个月的块。使用此LINQ to Entities查询,我得到的结果表明未进行整数除法:

 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