实际上,我有一个像这样的表达式,在Linq to Entity的情况下效果很好
public static Expression<Func<Tender, bool>> GetPublic()
{
var now = DateTime.Now.GetEasternStandardDateTime();
return tender => tender.EndDate > DateTime.Now &&
tender.IsClosed == false &&
tender.IsCancel == false &&
tender.PrivacyLevelId == 1;
}
我可以使用这样的表达式:_repositoryObject.Where(GetPublic())
我会得到结果。
但是当我必须像这样对SQL模式执行Linq时,我不能使用相同的表达式
var results = from t in Tenders
where Tender.GetPublic()
select t;
我有这个错误
无法将类型System.Linq.Expression>隐式转换为bool,以将Linq转换为SQL
我也不知道为什么
卡琳
首先,我怀疑您实际上是说您可以这样称呼它:
_repositoryObject.Where(GetPublic())
调用该方法以获取表达式树很重要。
您的查询表达式将被转换为:
var results = Tenders.Where(t => Tender.GetPublic());
...这不是您想要的。基本上,查询表达式使用lambda表达式转换为方法调用。在这种情况下,您不需要这样做,因此不应使用查询表达式。
如果要使用查询表达式执行其他操作,则可以始终混合使用,例如
var results = from t in Tenders.Where(Tender.GetPublic())
where t.SomeOtherProperty
select t.SomethingElse;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句