我目前正在开发一种必须给我的表达式方法(用于 linq to entity 查询)
- 给定期间的天数(开始日期和结束日期)
- 如果特价日在此期间,则减少此天数。
我的想法如下:
- 生成一个包含所有日期的可枚举(并使用 Enumerable.Range)
- 在这个可枚举上创建一个 .Where 以删除特价日期 Like a MyEnumerable.Where(a => a != "20120101")
- 之后,返回一个 MyEnumerable.Count()
我来了这个代码:
return (p) => Enumerable
.Range(1, 4)
.Where(a => a != 20120101)
.AsQueryable()
.Count()
我试图作为一个列表,作为一个可查询的,(如示例)和没有办法!它不起作用!我总是收到这个错误:
LINQ to Entities 无法识别方法 'System.Collections.Generic.IEnumerable`1[System.Int32] Range(Int32, Int32)' 方法,并且此方法无法转换为存储表达式。
你对此有什么想法吗?使用可枚举当然不是强制性的,任何可行的解决方案都是好的^^
提前谢谢!
为了简化我的问题,这不起作用,我想这样做。
(
from foo in User
select new
{
a = Enumerable.Range(1,4).Count()
}
).Take(1)
更多信息:-)
如果我这样做(外部化变量中的可枚举):
var foo = Enumerable.Range(1, 4);
return (p) => foo.Where(a => a != 20110101).Count();
这次它有效,但我无法用这种方法定义范围开始和结束!