【VB.NET】LINQ友の会【C#, C♯, C#】at TECH【VB.NET】LINQ友の会【C#, C♯, C#】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト314:デフォルトの名無しさん 09/01/07 02:50:59 >>311 >>312 >>313 ケチは付けられても結局答えられる奴いねぇんだな 暇なカス野郎だけかよ 315:デフォルトの名無しさん 09/01/07 03:06:42 var result = from item in Table1 select new {Sum1 = item.col1.Sum(), Sum2 = item.col2.Sum(), Sum3 = item.col3.Sum(), } でいいんじゃね? 316:デフォルトの名無しさん 09/01/07 04:16:09 いや、良くない。範囲変数itemは単なる1レコードで、item.col?はスカラー 1回のループで計算したいなら、アキュムレータ使うしかないはず var sum = Table1.Aggregate(new[] { 0, 0, 0 }, (y, x) => { y[0] += x.col1; y[1] += x.col2; y[2] += x.col3; return y; }); 317:デフォルトの名無しさん 09/01/07 05:35:25 >>316 それはクエリプロバイダ次第じゃなかろうか。 確かにLINQ to Objectのみなら>>316の書き方の方が速い。 しかしTable1.Aggregateのオーバーロード解決次第によっては クエリプロバイダの提供する最適なクエリ演算子ではなく LINQ to Objectの低速なパスで実行されるため>>316はかえって遅くなる。 式木的に Select Sum(col1),Sum(col2),Sum(col3) from Table1 というSQLに対応するのが何かと聞かれれば>>315を推したい。 あとは>>310が何を期待して聞いたか次第かな。 LINQ to SQLでの書き方を期待していたなら>>315でも最適化されたと思うが。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch