0

したがって、LINQ クエリで 1 つの要素のみを選択しています ( carsis of type Car[]):

Car selectedCar = (
    from x
    in cars
    where x.Location * direction > location * direction
    orderby x.Location * direction
    select x)
    .FirstOrDefault();

これは基本的に O(n log n) 操作です ( のためorderby)。LINQ を使用して最大 30% のパフォーマンス ヒットを取ることは問題ありませんが、O(n log n) にすることは問題ありません。LINQ を維持しながら操作の順序を減らす方法はありますか?

4

2 に答える 2

5

集約はトリックを行う必要があります:

Car selectedCar = cars
 .Where(x => x.Location * direction > location * direction)
 .Aggregate((a, b) => (a.Location * direction < b.Location * direction) ? a : b);

このコードが実際に機能するかどうかは確認していないので、注意してください。

于 2013-08-27T06:31:13.383 に答える
-1

これを試して:

Car selectedCar = cars.Where(x=>x.Location * direction > location * direction).Min(x=>x.Location * direction);
于 2013-08-27T06:14:02.773 に答える