我正在尝试使用PredicateBuilder,如这里所描述的- http://www.albahari.com/nutshell/predicatebuilder.aspx
以下代码
var predicate = PredicateBuilder.False<StreetDTO>();
predicate = predicate.Or(p => p.Locality.Contains(criteria.Locality));
predicate = predicate.Or(p => p.Name.Contains(criteria.Name));
predicate = predicate.Or(p => p.Town.Contains(criteria.Town));
List<StreetDTO> streetData = StreetData.Instance();
var streetList = from street in streetData.Where(predicate)
select street;据我所见,这应该是可行的,根据这个例子
var newKids = Product.ContainsInDescription ("BlackBerry", "iPhone");
var classics = Product.ContainsInDescription ("Nokia", "Ericsson")
.And (Product.IsSelling());
var query =
from p in Data.Products.Where (newKids.Or (classics))
select p;但我得到的只是
方法'System.Linq.Enumerable.Where(System.Collections.Generic.IEnumerable,System.Func)‘的类型参数不能从用法中推断。尝试显式指定类型参数。
我试图在LINQ‘在职’中获得一些理解,所以如果这是一个简单的问题,我很抱歉。
发布于 2009-05-18 10:24:39
啊;您的列表使用的是IEnumerable<T>扩展方法(而不是IQueryable<T>) --尝试:
var streetList = from street in streetData.AsQueryable().Where(predicate)
select street;发布于 2009-05-18 10:23:22
试着编译谓词:
var streetList = from street in streetData.Where(predicate.Compile())
select street;https://stackoverflow.com/questions/877034
复制相似问题