0

同じ日付に関連付けられているデータを平均化しようとしており、linq を使用して datetime から日付だけを取得しようとしています。これを mysql ワークベンチで実行して、必要な結果を得ることができます。

select avg(pl.time), Date(pl.created_at) as date
from page_loads as pl
join sites as s
on pl.site_id = s.id
join test_runs as t
on pl.test_run_id = t.id
where s.3id = 17
group by date

linqでこれを行うにはどうすればよいですか。私はこれまでのところこれを持っています:

var data = from pl in page_loads
           join s in sites 
           on pl.site_id equals s.id
           join t in test_runs
           on pl.test_run_id equals t.id
           where s.3id == 17
           select new { time = pl.time, created_at = pl.created_at };

これにより、次の結果が得られます。

4034    2012-06-06 00:15:48
5649    2012-06-06 00:31:05
4275    2012-06-06 01:48:54
4352    2012-06-07 06:50:27
5672    2012-06-07 07:05:15
7510    2012-06-07 17:49:25
10366   2012-06-07 17:49:53
12193   2012-06-07 18:32:28
3681    2012-06-07 18:55:42
7951    2012-06-07 18:59:59
2273    2012-06-07 19:26:38
6816    2012-06-08 22:41:48
6918    2012-06-08 22:44:40
3702    2012-06-08 23:03:58
3065    2012-06-08 23:04:58
5981    2012-06-19 20:46:40
1695    2012-06-19 20:48:36
4323    2012-06-19 20:50:24

しかし、同じ日付に関連付けられている数値を平均化し、日時スタンプから日付だけを抽出したいと考えています。

4

2 に答える 2

1

あなたがしようとしているのは、日付のグループ化に基づいて平均を取得することですが、作成した LINQ にはグループ句が含まれていません。始めるには、LINQ の例を参照することをお勧めします。このLINQ 集計演算子は、使用できる例を提供します。

于 2012-06-20T06:10:02.863 に答える
0

DateTime の Date プロパティは、その日付だけの DateTime を提供します。
つまり:(new DateTime(2001,1,1,13,1,1)).Dateに等しい必要がありますnew DateTime(2001,1,1)

このようなものは、メモリ内オブジェクトに対して機能するはずです:

var data = from pl in page_loads
       join s in sites 
       on pl.site_id equals s.id
       join t in test_runs
       on pl.test_run_id equals t.id
       where s.3id == 17

       group pl by pl.created_at.Date into g 
       select new { time = g.Average(t=>t.time), created_at = g.Key };

編集:スタック オーバーフローの質問LINQ to Entities group-by failure using .dateには、Entity Framework/LINQ to SQL に適したメソッドの使用方法の詳細が記載された受け入れられた回答があります。

グループ行を次のように変更する必要があります。

       group pl by EntityFunctions.TruncateTime(pl.created_at) into g 

ただし、それ以外の場合、ソリューションの残りの部分は同じままです。

于 2012-06-20T06:04:15.750 に答える