我正尝试在实体框架查询中使用表达式。 我创建了两个表达式:结合了两个表达式
public Expression<Func<IEntityPriceDefinition, bool>> IsMatchExpression(long additionId)
{
return x => x.PriceDefinition.AdditionsPrices.Any(a => a.AdditionId == additionId);
}
public Expression<Func<IEntityPriceDefinition, bool>> IsMatchExpression(
long? inviterId, long? routeId, long? luggageTypeId)
{
return x =>
(inviterId.HasValue || routeId.HasValue || luggageTypeId.HasValue) &&
!(
(x.PriceDefinition.InviterId.HasValue && inviterId.HasValue &&
PriceDefinition.InviterId.Value != inviterId.Value) ||
(PriceDefinition.LuggageTypeId.HasValue && luggageTypeId.HasValue &&
PriceDefinition.LuggageTypeId.Value != luggageTypeId.Value) ||
(PriceDefinition.InviterId.HasValue && inviterId.HasValue &&
PriceDefinition.InviterId.Value != inviterId.Value)
);
}
现在我愿意将它们合并:
public Expression<Func<IEntityPriceDefinition, bool>> IsMatchExpression(
long? inviterId, long? routeId, long? luggageTypeId, long additionId)
{
return IsMatchExpression(inviterId, routeId, luggageTypeId) &&
IsMatchExpression(additionId);
}
此方法不编译。我也有这种感觉,我做错了什么。我该如何解决它?
编辑:
我忘了重要的一部分!该问题已更新。
应返回布尔值,否? – Nicolas78 2011-05-02 09:56:34
@ Nicolas78:我需要创建将结合两个表达式的表达式。 – Naor 2011-05-02 10:06:20
啊好的。以及你在这里写的评估两个表达式,并尝试返回true或false取决于是否都符合。也许你可以对这些MatchExpressions和你的用例做一些说明,这样我们可以更好地帮助你。 – Nicolas78 2011-05-02 10:12:46