엔티티 프레임 워크 쿼리에서 사용할 표현식을 만들려고합니다. 나는 두 표현식 생성 :두 표현식을 결합하십시오.
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
@ Nicolas78 : 두 표현식을 결합하는 표현식을 만들어야합니다. – Naor
아 좋아. 여기에 쓰는 것은 두 표현식을 모두 평가하고 두 표현식이 모두 충족되는지 여부에 따라 true 또는 false를 반환하려고 시도합니다. 어쩌면 우리는 더 나은 당신을 도울 수 있도록 이러한 MatchExpressions 및 사용 사례에 대해 조금 말할 수 있습니다. – Nicolas78