Я заработал, используя несколько разных методов.Построение LINQ Between Operator Я создал новый метод
public static IQueryable<TSource> Between<TSource, TKey>(this IQueryable<TSource> source, TKey key, Expression<Func<TSource, TKey>> lowSelector, Expression<Func<TSource, TKey>> highSelector)
where TKey : IComparable<TKey>
{
Expression low = Expression.Invoke(lowSelector, lowSelector.Parameters.ToArray());
Expression high = Expression.Invoke(highSelector, highSelector.Parameters.ToArray());
Expression lowerBound = Expression.LessThanOrEqual(low, Expression.Constant(key));
Expression upperBound = Expression.LessThanOrEqual(Expression.Constant(key), high);
Expression<Func<TSource, bool>> lambda = Expression.Lambda<Func<TSource, bool>>(lowerBound, lowSelector.Parameters);
Expression<Func<TSource, bool>> lambda2 = Expression.Lambda<Func<TSource, bool>>(upperBound, highSelector.Parameters);
return source.AsExpandable().Where(lambda).Where(lambda2);
}
Это не сработало, если я не использовал AsExpandable или ToList ().
AsExpandable () isиз LinkKit
ToList () переводит его из Linq в сущности в Linq To Objects, но выполняет SQL.
Спасибо за вашу помощь и предложения