我正在尝试进行一些分区,将列表条目划分为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)......我也不会想到它。
答案 0 :(得分:1)
实体框架可能在生成SQL时忽略了您的演员表。
基于LINQ的SQL生成器很少(如果有的话)是完美的 特别是,.Net的类型系统与SQL的不同,它们可能忽略了所有的转换。
请尝试拨打Math.Floor
。