我正嘗試在實體框架查詢中使用表達式。 我創建了兩個表達式:結合了兩個表達式
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