Я пытаюсь реализовать предложение 'IN' в моем EF-запросе с помощью лямбда-выражения следующим образом:
/*lambda expression to evaluate: status in[a, b, c...n]*/
_IN myIN = (allStatus, status) =>
{
bool lambdaResult = false;
foreach (int s in statuses)
{
if (status == s)
{
lambdaResult = true;
break;
}
}
return lambdaResult;
};
result = (from v in _entity.CAVouchers
join vs in _entity.CAVoucherStatus.Where(vs => (myIN(statuses, vs.VoucherStatusId) == true)) on v.VoucherStatusId equals vs.VoucherStatusId
join vsr in _entity.CAVoucherStatusReason on v.VoucherStatusReasonId equals vsr.VoucherStatusReasonid
where v.CyberAgent.CAID == caid
select new ACPVoucher()
{
...
}).ToList();
Это выдает ошибку «Тип вызова LINQ« Invoke »не поддерживается в LINQ to Entities» из-за условия «где».
По сути, мне нужен пункт «где statusId в [1, 2, 3]».
Что не получается? ... какие-нибудь советы, как это сделать? Тот же подход работает для меня, когда применяется к универсальному списку.
Спасибо