1

linqを使用して、配列をソートし、その後Xより小さいすべての数値を返すにはどうすればよいですか

並べ替えにはそれを使用します:(それは良い方法ですか?)

var sorted = (配列の番号から、番号の昇順で番号を選択).ToArray();

だから私はそれを「ソート済み」配列にソートしました。

X より小さいすべての数値を返すにはどうすればよいですか。

4

2 に答える 2

2

フィルタリングするに並べ替えたいのはなぜですか? これは、最初にフィルタリングして残りを並べ替えるよりも効率的ではありません。

var sorted = array.Where(i => i < x).OrderBy(i => i).ToArray(); 

またはクエリ構文で:

var sorted = (from i in array
              where i < x
              orderby i
              select i).ToArray(); 

LINQ 拡張メソッドの順序はパフォーマンスに影響しませんか? (タイトルは誤解を招きます。実際にOrderByは、E.Lippertが回答で説明しているように、順序が重要な例外の1つです)

于 2013-02-11T11:04:14.230 に答える
1
var result = from n in array
             where n < value
             orderby n
             select n;

またはメソッド構文で:

var result = array.Where(n => n < value).OrderBy(n => n);

ソートされた配列が既にある場合は、TakeWhileも使用できます

var result = sortedArray.TakeWhile(n => n < value);

ソートする前にシーケンスをフィルタリングすることをお勧めします。なんで?並べ替えを行うと、すべてのアイテムが内部の並べ替えられた構造に格納されるためです。したがって、ソートする必要のある項目が少ないほど、コードはより速く動作します (そしてメモリの使用量も少なくなります)。

于 2013-02-11T11:04:07.303 に答える