複数の列を含むデータテーブルがあります。グループ化せずにlinqでこれらの平均を計算したい:私はこれを試した:
dtPointCollFb.GroupBy(r => 1).Select(r => new
{
Plus100 = r.Average(item => item.PLUS100),
Plus50 = r.Average(item => item.PLUS50),
Plus10 = r.Average(item => item.PLUS10),
Plus5 = r.Average(item => item.PLUS5),
Plus1 = r.Average(item => item.PLUS1),
NULLA = r.Average(item => item.NULLA)
}).ToList()
合計を計算すると、これは完全に機能しますが、平均を使用すると、すべてのレコードの平均ではなく、最初のレコードの値が生成されます。これは不要だと思います: .GroupBy(r => 1) 定数でグループ化しているためです。
しかし、これがなければ、クエリ全体と1つの列だけに平均を使用することはできません:
dtPointCollFb.Average(r => r.PLUS100)
では、誰かが簡単なベスト プラクティス ソリューションを作成できますか? クエリではなく、メソッド構文で可能であれば。
私はこのようなものが欲しい:
dtPointCollFb.GroupBy(r => 0).Select(r => new
{
Plus100 = r.Sum(item => item.PLUS100) / dtPointCollFb.Rows.Count,
Plus50 = r.Sum(item => item.PLUS50) / dtPointCollFb.Rows.Count,
Plus10 = r.Sum(item => item.PLUS10) / dtPointCollFb.Rows.Count,
Plus5 = r.Sum(item => item.PLUS5) / dtPointCollFb.Rows.Count,
Plus1 = r.Sum(item => item.PLUS1) / dtPointCollFb.Rows.Count,
NULLA = r.Sum(item => item.NULLA) / dtPointCollFb.Rows.Count
}).ToList()
しかし、よりシンプルでクリーンな方法で。これにより、平均が正しく生成されます。