Я хочу, чтобы добавить динамическое выражение LINQ, но сталкивается с проблемами, от того, содержит метод, который он прекрасно работает на равных методLINQ Выражение Содержит
Проблема в Я получаю FilterField
динамически, как заменить в запросе
Так далеко я попытался
List<int> Ids = new List<int>();
**string filterField ="DEPARTMENT"; ==> Dynamic Field**
var eParam = Expression.Parameter(typeof(EmployeeDetail), "e");
var comparison = Expression.Equal(Expression.Property(eParam, filterField), Expression.Convert(Expression.Constant(Ids), Expression.Property(eParam, filterField).Type));
var lambda = Expression.Lambda<Func<EmployeeDetail, bool>>(comparison, eParam);
var countMonthly1 = ctx.tblMonthlyInput.Join(ctx.tblEmployee, a => a.CompanyId, b => b.CompanyId, (a, b) => b).Where(lambda).Count();
Я хочу сделать выше запрос работает Содержит метод с использованием выражения Linq
образца д uery:
var countMonthly = (from a in ctx.tblMonthlyInput
join b in ctx.tblEmployee on a.CompanyId equals b.CompanyId
where categoryId.Contains(a.CategoryId) //want to make this dynamic
select a).Count() == 0;
Не могли бы вы отправить код, который скомпилируется? –
Вам нужно будет получить метод 'List.Contains' и вызвать его через' Expression.Call() '. – Rob
Образец запроса @Thomas, который я упомянул, компилируется правильно, но проблема в том, что я хочу сделать ('a.CategoryId') динамический – Nilesh