これは非常に短い質問であり、私もその答えが短いことを恐れる。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を使用してコンパイルされたクエリを使用することは可能ですか?
私はこれを知っています。明らかに、10個の項目をソートしても何の問題もありませんが、ページを作成しようとすると、列単位でソートされたレコードをページングしている場合スライスがそこで行われるように見える問題になります。しかし、アイデアに感謝しますが、実際にあなたの答えを読む方法は単純な "いいえ、これは不可能です"と思われます。 – kastermester
ページングしている場合は、並べ替え後にToListする必要はありません。スキップして実行する必要があります。 –
私が話している問題は、コレクションを考えてみましょう.1000.000個のアイテムを考えてみましょう。そして、var list = myCollection.OrderBy(s => s.Title).Skip(5000).Take(10).ToList();を実行します。このアプローチでは、データベースのコレクション全体を取り出し、ソートしてスキップして実行する必要があると提案します(つまり、これは遅くなります)。コンパイルされたクエリを使用するという私の考えは、より速く、遅くはないということです。 – kastermester