我正在使用PredicateBuilder生成where子句
var locationFilter = PredicateBuilder.True<dbCompanyLocation>();
locationFilter = locationFilter.And(s => s.IsPrimary == true && s.State == practiceState);
var companyPredicate = PredicateBuilder.True<dbCompany>();
companyPredicate = companyPredicate.And(c => c.dbCompanyLocations.Where(locationFilter));我得到以下错误,任何人都可以帮助这一点,或者我做错了什么。
实例参数:无法从'System.Data.Linq.EntitySet‘转换为'System.Linq.IQueryable’
发布于 2012-06-27 05:33:38
直接的问题似乎是dbCompany.dbCompanyLocations是一个EntitySet,它实现了IEnumerable<T>而不是IQueryable<T>。这意味着它的Where扩展方法需要一个Func<dbCompanyLocation, bool>,但是您提供的locationFilter变量是一个Expression<Func<dbCompanyLocation, bool>>。
您可以通过调用Compile方法从locationFilter创建Func<dbCompanyLocation, bool>。
然而,另一个问题是,即使它进行了类型检查,c => c.dbCompanyLocations.Where(locationFilter)也不是谓词,因为Where返回的是IEnumerable<T>而不是bool。您可能打算使用Any而不是Where,即
companyPredicate = companyPredicate.And(c => c.dbCompanyLocations.Any(locationFilter.Compile()));https://stackoverflow.com/questions/10808031
复制相似问题