![](/img/trans.png)
[英]How to use Entity Framework group date not date with time and sum total where condition
[英]how to use entity framework to group by date not date with time
我的代碼:
//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() };
此代碼將拋出異常,例如實體框架不支持獲取日期操作。 因為log.createtime
都有日期和時間,我想按日期分組,我該怎么做
使用EntityFunctions.TruncateTime
方法 ( 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() };
這是為以后的實體框架版本執行此操作的更簡單方法。
var query = Data
.GroupBy(o => new { EventDate = o.EventDate.Date })
.Select(s => new SalesData()
{
EventDate = s.Key.EventDate,
Amount = s.Sum(o => o.Amount),
Qty = s.Sum(o => o.Qty),
RefundAmount = s.Sum(o => o.RefundAmount),
RefundQty = s.Sum(o => o.RefundQty),
})
.OrderBy(o => o.EventDate)
.ToList();
返回查詢;
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.