首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PredicateBuilder where子句问题

PredicateBuilder where子句问题
EN

Stack Overflow用户
提问于 2012-05-30 07:17:18
回答 1查看 435关注 0票数 1

我正在使用PredicateBuilder生成where子句

代码语言:javascript
复制
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’

EN

回答 1

Stack Overflow用户

发布于 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,即

代码语言:javascript
复制
companyPredicate = companyPredicate.And(c => c.dbCompanyLocations.Any(locationFilter.Compile()));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10808031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档