2014-01-07 18 views
15

mycodeをエンティティフレームワークを使用します。 log.createtimeには日付と時刻があるため、日付でグループ化したいのですが、どうすればいいですかはどのように時間と日付ではない日付でグループに

+1

あなたは正確な例外を含めるようにあなたの質問を編集することはできますか? –

答えて

34

EntityFunctions.TruncateTime Method (Nullable<DateTime>)を使用してください。

時間の値が切り捨てられた状態で式を返します。これは、生成されたSQLクエリでTRUNCATETIME()のTSQL関数に変換されます。

次のようにだからあなたのコードは次のようになります。

//get data 
var myData = from log in db.OperationLogs 
      group log by EntityFunctions.TruncateTime(log.CreateTime) into g 
      orderby g.Key 
      select new { CreateTime = g.Key, Count = g.Count() }; 
+0

thx、それは私を助けます – Arthas

+20

EF6を使用する場合、EntityFunctionsは廃止され、DbFunctionsに置き換えられます(そして、おかげで、私は助けてくれました:)) –

+1

TruncateTimeはまだタイムゾーンを返すので、dbタイプはdatetimeoffsetでした。型がdatetimeの場合は動作します。 –

-1
 var result = from s in entitiesModel.TvysFuelTankDatas 
          orderby s.Datetime ascending 
          group s by new { y = s.Datetime.Year, m = s.Datetime.Month + "/", d = s.Datetime.Day + "/" } into g 
          select new WellDrillData { Date = Convert.ToDateTime(g.Key.d.ToString() + g.Key.m.ToString() + g.Key.y.ToString()), Depth = (double)g.Sum(x => x.Difference) }; 

       List<WellDrillData> dailyFuelConsumptions = result.ToList(); 
関連する問題