LINQ to Entities整数除法不正确?

时间:2011-10-02 03:13:57

标签: 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   AgeInHalfYears  AgeFloor
68          11              68
41           7              41
34           6              34

我希望在最后一栏中有66,36和30。

我简单地将LINQ改写为

AgeFloor = e.AgeMonths - (e.AgeMonths%6)

但是我仍然很好奇分裂操作为什么显然是浮点数,即使在那里投射了那个(int)......我也不会想到它。

1 个答案:

答案 0 :(得分:1)

实体框架可能在生成SQL时忽略了您的演员表。

基于LINQ的SQL生成器很少(如果有的话)是完美的 特别是,.Net的类型系统与SQL的不同,它们可能忽略了所有的转换。

请尝试拨打Math.Floor