LINQ CompiledQuery.Compile и динамическая сортировка?

Это очень короткий вопрос, и я боюсь, что ответ тоже короткий.

Есть ли способ сделать что-либо в соответствии с

Func<DataContext, string, bool, IEnumerable<X> fnMyQuery = CompiledQuery.Compile<DataContext, string, bool IList<X>(
     (db, sortColumn, sortDesc) => (
          (!sortDesc)?
              db.OrderBy(x => DynamicResolve(sortColumn))
          :
              db.OrderByDescending(x => DynamicReolve(sortColumn))
      ));

С другой стороны, я хотел бы создать скомпилированный запрос, который может принимать в столбце и порядке сортировки, а затем сортировать мои результаты таким образом - я могу решить, как это сделать, не скомпилировав запрос, но возможно ли это с помощью скомпилированного запроса с использованием LINQ to SQL?

.net,sql,linq,

0

Ответов: 2


0 принят

Точка CompiledQuery.Compile предназначена для создания полностью переведенного и готового метода, который оценивает запрос.

Полностью переведен.

Конечно, нет ничего, что мешает вам выполнять сортировку вне базы данных (источником может быть скомпилированный запрос).

public IList<T> SortedResults<T>(IEnumerable<T> source,
  string sortColumn, bool sortDesc)
{
  List<T> results = source.ToList();
  if (!sortDesc)
  {
    results = Enumerable
      .OrderBy(results, x => DynamicResolve(sortColumn))
      .ToList();
  }
  else
  {
    results = Enumerable
      .OrderByDescending(results, x => DynamicResolve(sortColumn))
      .ToList();
  }
  return results;

}

1

Единственный способ узнать это - это собрать два запроса. Один для каждого порядка сортировки, а затем обертывание с помощью помощника, который делегирует правильный скомпилированный запрос.

.net, SQL, LINQ,
Похожие вопросы