私は問題の簡略化を作成しました。私は、フィルタオブジェクトをunorder可能性がどこで私は何があるだろうということを理解していないなぜフィルタリング後にIOrderedEnumerableが順序を保持しないのですか
IOrderedEnumerable<int> tmp = new List<int>().OrderBy(x => x);
//Error Cannot Implicitly conver IEnumerable<int> To IOrderedEnumerable<int>
tmp = tmp.Where(x => x > 1);
に可能性を持っている必要がありながら
これはコンパイルされません適用し、なぜ私は思ったんだけど、IEnumerableを注文しましたlinqをいくつかのDBプロバイダに使用するなどのIQueryableから実行命令を受け取った場合、実行順序がわかります。
しかし、Linq To Objectを扱う場合、あなたのオブジェクトの順序を決めるシナリオは何か、あるいはこれはなぜ実装されなかったのでしょうか?
EDIT
は私が正しく問題ではないこと、これを注文する方法を理解します。私の質問は設計上の問題です。 linqからオブジェクトへのフィルタは、与えられた列挙型と適用フィルタリングを列挙する必要があります。だから、私たちはIOrderedEnumerableの代わりにIEnumerableしか返すことができないのはなぜですか?これはuserfulだろうときでsenarioを明確にするために
EDIT
。私はコード内の条件に基づいてクエリを構築していますが、可能な限り多くのコードを再利用したいと考えています。
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
:私はそれが元の秩序状態にあるであろうにもかかわらず
それはいけない - 絶対に罰金されるべきであること。あなたがそうでないことを観察していると言っているのであれば、[mcve]を提供してください。一般的には、注文する前にフィルタリングすることをお勧めします...無視しようとしているアイテムの読み込みをどうして迷うのですか? –
'IOrderedEnumerable'ではないかもしれませんが、まだ注文されていますか?そうでなければ見ていますか? –
トピックをオフにしたかもしれませんが、なぜソート後に「どこで」ですか?より小さなリストで並べ替えが高速になります。 – Leon