LINQクエリがあり、すべてdouble値を持つ多数の子リストを含むリストが表示されます。
これからqueryResultを取得したいと思います。
最初、最後、最高、最低のdouble値を取得するにはどうすればよいですか?
それは新しいオブジェクトである必要があり、新しい戻り値はリストである必要がありますか?
LINQクエリがあり、すべてdouble値を持つ多数の子リストを含むリストが表示されます。
これからqueryResultを取得したいと思います。
最初、最後、最高、最低のdouble値を取得するにはどうすればよいですか?
それは新しいオブジェクトである必要があり、新しい戻り値はリストである必要がありますか?
ハンドコーディングされたバージョンの方が少し速いのは事実ですが、パフォーマンスがアプリケーションの重要な問題であることがわかっていない限り、私はそれについて心配する必要はありません。コードのLINQバージョンは次のようになります。
IEnumerable<List<double>> queryResults = /*...*/
var aggregates =
from ds in queryResults
select new {
First = ds[0], Last = ds[ds.Count - 1],
Lowest = ds.Min(), Highest = ds.Max() };
これは間違いなく読みやすいと思います:-)。ネストされたもの(ds
)がタイプでない場合は、直接インデックス付けの代わりに拡張メソッドList
を使用する必要があります。First()
Last()
パフォーマンスに関心がある場合は、複数のスレッドでクエリを実行するParallelLINQを使用することもできます。簡単に言うと、そうする本当の理由はありませんが、コレクションが大きい場合は、パフォーマンスが向上する可能性があります(シングルスレッドのハンドコードバージョンよりも優れています)。