0

LINQクエリがあり、すべてdouble値を持つ多数の子リストを含むリストが表示されます。

これからqueryResultを取得したいと思います。

最初、最後、最高、最低のdouble値を取得するにはどうすればよいですか?

それは新しいオブジェクトである必要があり、新しい戻り値はリストである必要がありますか?

4

2 に答える 2

1

ハンドコーディングされたバージョンの方が少し速いのは事実ですが、パフォーマンスがアプリケーションの重要な問題であることがわかっていない限り、私はそれについて心配する必要はありません。コードの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を使用することもできます。簡単に言うと、そうする本当の理由はありませんが、コレクションが大きい場合は、パフォーマンスが向上する可能性があります(シングルスレッドのハンドコードバージョンよりも優れています)。

于 2009-03-05T11:16:07.110 に答える