各句が個別に実行されるためAggregate
、複数の句を持つ Linq 式の最初の (外側の) 句として使用すると、VB.NET のクエリに致命的な欠陥がありますか?Into
Into
SELECT MIN(ZoneMin), MAX(ZoneMin) FROM Plant
LINQ to SQLの「明白な」答えは
Dim limits = Aggregate p In Plants Select p.ZoneMin Into Min(), Max()
ただし、この回答は実際には、Min
と(およびMax
のような他の集計関数を含める場合) を個別のSQL クエリで取得します。これは、LINQPad で簡単に確認できます。Count
Average
LINQPad によって表示されないトランザクション (またはこれらのクエリをアトミックにする何か) がありますか、それとも競合状態が発生するのを待っていますか? (したがって、上記の質問への回答に示されているトリックを実行して、複数の集計を返す単一のクエリを強制する必要があります。)
Aggregate
要約すると、単一の (または少なくとも「アトミック」) クエリで複数の集計関数を返すLINQ-to-SQL クエリはありますか?
(私への明白な答えはAggregate p In Plants Into Min(p.ZoneMin), Max(p.ZoneMin)
、最適化されている場合でも、実際にはテーブル全体を 2 回取得し、Linq-to-Entities を使用しMin
てMax
結果を取得するため、「明白」とも言います:-()
VB固有ではないと思ってAggregate
いましたが、C#にはこのクエリ式がないようですので、.netをvb.netに変更しました。