Как использовать структуру сущности для группировки по дате без даты со временем

мой код:

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

этот код будет выдавать исключение, так как структура сущностей не поддерживает операцию get Date. потому что log.createtime имеют дату и время, я хочу сгруппировать по дате, как я должен делать

Ответы

Ответ 1

Используйте EntityFunctions.TruncateTime Метод (Nullable<DateTime>). Он будет переведен в функцию TRUNCATETIME() TSQL в сгенерированном SQL-запросе, который делает то, что вам нужно:

Возвращает выражение с укороченными значениями времени.

Итак, ваш код должен быть следующим:

//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() };

Ответ 2

     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();