私が書き込もうとしている実際のクエリは、タイトルが示唆するよりも少しトリッキーです。私はそのような注文のリストを持っています:List<Order>
、注文は次のようになります:
public class Order
{
private StockCodes _stockCode;
private bool _bidSide;
private int _volume;
private decimal _price;
}
特定の銘柄コードを指定して、最良の買値と出来高、および最良の売値と出来高を公開する必要があります。最高入札価格は、bidSideが真である最高価格として定義されます。ベストセル価格は、bidSideがfalseの場合の最低価格として定義されます。
たとえば、証券コード「ABC」の次のデータがあるとします。
{ bidSide: true, volume: 25, price: 25 }
{ bidSide: true, volume: 25, price: 25 }
{ bidSide: true, volume: 25, price: 5 }
{ bidSide: false, volume: 100, price: 1 }
{ bidSide: false, volume: 50, price: 2}
{ bidSide: false, volume: 75, price: 8 }
ベストビッド:価格25、ボリューム50(最高価格で2つの注文があるため)ベストセル:価格1、ボリューム100(最低価格で1つの注文しかないため)
最後に、ビッドまたはセルの注文がない場合を考慮する必要があります。効率が最優先されるので、これを1つのlinqステートメントで実行できる場合はそれが望ましいでしょう。