1

ラムダ形式を使用して1秒あたりのレコードをグループ化するC#LINQの方法を探しています。私の検索では、これを行うための良い方法をまだ見つけていません。

SQLクエリは次のとおりです。

select count(cct_id) as 'cnt'
  ,Year(cct_date_created) 
  ,Month(cct_date_created) 
  ,datepart(dd,cct_date_created) 
  ,datepart(hh,cct_date_created) 
  ,datepart(mi,cct_date_created) 
  ,datepart(ss,cct_date_created) 
from ams_transactions with (nolock)
where cct_date_created between dateadd(dd,-1,getdate()) and getdate()
group by 
  Year(cct_date_created)
  ,Month(cct_date_created)
  ,datepart(dd,cct_date_created)
  ,datepart(hh,cct_date_created)
  ,datepart(mi,cct_date_created)
  ,datepart(ss,cct_date_created)

今、私が来ることができた最も近いものは次のとおりでしたが、それは私に正しい結果を与えていません。

var groupedResult = MyTable.Where(t => t.cct_date_created > start 
                                    && t.t.cct_date_created < end)
                           .GroupBy(t => new { t.cct_date_created.Month,
                                               t.cct_date_created.Day,
                                               t.cct_date_created.Hour,
                                               t.cct_date_created.Minute, 
                                               t.cct_date_created.Second })
                           .Select(group => new { 
                                                 TPS = group.Key.Second
                                                });

これは秒単位でグループ化されているように見えますが、日付範囲の個々の分ごとではなく、日付範囲の毎分の秒ごとに考慮されています。1秒あたりのトランザクション数を取得するには、月、時間、日、分の各分を個別に考慮する必要があります。

目標は、このグループ化されたリストから最大値と平均値を取得することです。どんな助けでも大歓迎です:)

4

1 に答える 1

2

現在、カウントではなく2番目を選択しています-なぜですか?(明確な理由もなく匿名タイプも使用しています。プロパティが1つしかない場合は、匿名タイプでラップするのではなく、そのプロパティを選択することを検討してください。)

したがって、次のように変更Selectします。

 .Select(group => new { Key = group.Key,
                        Transactions = group.Count() });

または、すべての主要なプロパティを個別に持つには:

 .Select(group => new { group.Month,
                        group.Day,
                        group.Hour,
                        group.Minute,
                        group.Second,
                        Transactions = group.Count() });

(余談ですが、年の部分は絶対に必要ありませんか?それはSQLにあります...)

于 2012-09-23T06:18:05.723 に答える