现在需要filter某个字段按照给定的范围,用SQL如下:
select ProductType from Products
where ProductType between 'A' and 'C'
order by ProductType
网上找到一个BetweenExtensions(http://www.hookedonlinq.com/BetweenOperator.ashx),不能用,因为我需要的是N多个filters一起作用后的最终结果,
var query= from p in db.Products
joint xxx
select new { xxx, yyy, zzz ... }
if(...)
query=query.where(condition1);
if(...)
query=query.where(condition2);
if(...)
query=query.where(conditionN);
这样一层层把结果范围缩小,最后送给Gridview显示出来,所以返回结果必须是IQueryable类型,而BetweenExtension里的类型是IEnumerable,如果简单的把IEnumerable换成IQueryable,里面的iterator和IQueryable冲突。
select ProductType from Products
where ProductType between 'A' and 'C'
order by ProductType
网上找到一个BetweenExtensions(http://www.hookedonlinq.com/BetweenOperator.ashx),不能用,因为我需要的是N多个filters一起作用后的最终结果,
var query= from p in db.Products
joint xxx
select new { xxx, yyy, zzz ... }
if(...)
query=query.where(condition1);
if(...)
query=query.where(condition2);
if(...)
query=query.where(conditionN);
这样一层层把结果范围缩小,最后送给Gridview显示出来,所以返回结果必须是IQueryable类型,而BetweenExtension里的类型是IEnumerable,如果简单的把IEnumerable换成IQueryable,里面的iterator和IQueryable冲突。