0

多くの列(〜200)を持つSQLテーブルがあります。

すべての行の合計を列ごとに取得する LINQ クエリを作成したいと考えています。結果は、各列の合計を表す 1 つの行になります。

この LINQ クエリを実行するにはどうすればよいですか?

.Sum(...)各列に固有のものを作成するのは困難です。

4

6 に答える 6

2

あなたは使用してみることができます:

var results = (from i in yourCollection
               group g by i.Column into g
               select new
               {
                   ColumnName = i.Column,
                   ColumnTotal = i.Sum(x => x.Value) 
               }).ToList();
于 2013-09-05T12:18:17.177 に答える
0
var sums = (from c in columns
    group c by c.columnName into g
    select new
    {
        SumCol1 = g.Sum(x => x.Col1), 
        SumCol2 = g.Sum(x => x.Col2) 
    }).SingleOrDefault;

たとえば、コンソール アプリケーションで変数にアクセスするには...

Console.Write(sums.SumCol1.ToString() + " : " + sums.SumCol2.ToString());
于 2013-09-05T12:23:12.793 に答える
0

私はこのソリューションを使用しました:

from res in datacTx.Table
        where ...
        group re by re.id into g
        select new
        {
         col1 = g.Sum(x => x.col1),
         col2 = g.Sum(x => x.col2),
         ...
        };

しかし、どの値にもアクセスできないか、結果を各列がリスト内のエントリを表すリストに変換できません。

これまで、linq クエリの値にアクセスするためにこれを使用してきました。

foreach (var propertyInfo in res.GetType().GetProperties())
{
 ...
}

しかし、プロパティがないため、これは機能していません。

于 2013-09-07T16:12:18.920 に答える
-1

sqlcommand を使用できます。このコマンドを実行すると、行ごとに結果の配列が返され、array.Sum() を使用できます。

または、SQL 計算列を追加します。

于 2013-09-05T12:18:26.213 に答える