C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: Linqで複数列集計したい


(過去ログ 55 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■30713 / inTopicNo.1)  Linqで複数列集計したい
  
□投稿者/ さら (1回)-(2009/01/04(Sun) 03:22:13)

分類:[C#] 

単一だと、
DataContext db = new DataContext()
var q = (from t in db.Table1
select t.col1).Sum();
で取得できるのですが、
Select Sum(col1),Sum(col2),Sum(col3) from Table1
のように複数列集計の場合はどういう方法でしょうか?
よろしくお願いします。

引用返信 編集キー/
■30819 / inTopicNo.2)  Re[1]: Linqで複数列集計したい
□投稿者/ こくぶん (3回)-(2009/01/07(Wed) 11:04:49)
こくぶん さんの Web サイト
No30713 (さら さん) に返信
> 単一だと、
> DataContext db = new DataContext()
> var q = (from t in db.Table1
>         select t.col1).Sum();
> で取得できるのですが、
> Select Sum(col1),Sum(col2),Sum(col3) from Table1
> のように複数列集計の場合はどういう方法でしょうか?
> よろしくお願いします。
> 


集計結果をひとつのオブジェクトに入れたいのであれば
var q = new {
    sum1 = db.Table1.Select(t => t.col1).Sum(),
    sum2 = db.Table1.Select(t => t.col2).Sum(),
    sum3 = db.Table1.Select(t => t.col3).Sum()
  };
などでいけると思います。

ただし、 Sum() は内部で全要素を foreach で回している(上記例だと foreach が 3 回実行される事になる)ので、
実際には、 Linq を使用せずに自前で集計した方が速いです。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -