Я пытаюсь сделать некоторую оптимизацию кода в своем приложении и заменить несколько методов, которые делают то же самое с одним. У меня есть этот LINQ, что мне нужно выполнить с различными фильтрами, но я получаю ошибки времени проектирования в .где (фильтр) частьДинамическое изменение Где фильтры в linq
Expression<Func<dbTable, bool>> filter;
switch (i)
{
case 1: filter = (p => p.f1 == ExternalParam);
case 2: filter = (p => p.f2 == ExternalParam);
}
var ds = (from tbl in dbEntities.dbTable
orderby tbl.f1
select new
{
f1 = tbl.f1,
f2 = tbl.f2,
f3 = tbl.f3,
f4 = tbl.f4,
}
).Where(filter);
Ошибки
Error 1 'System.Linq.IQueryable<AnonymousType#1>' does not contain a definition for 'Where' and the best extension method overload 'System.Linq.Queryable.Where<TSource>(System.Linq.IQueryable<TSource>, System.Linq.Expressions.Expression<System.Func<TSource,int,bool>>)' has some invalid arguments
Error 2 Argument 2: cannot convert from 'System.Linq.Expressions.Expression<System.Func<AppNameSpace.dbTable,bool>>' to 'System.Linq.Expressions.Expression<System.Func<AnonymousType#1,int,bool>>'
Может кто-то помочь с этим?
Я думаю, что вокруг круглых кронштейнов не должно быть (от..orderby..select) – Fratyx