我有一个包含以下列和示例数据的表:
acteename updated_at count (count is not sorted in db)
dev-52 2/7/2020 5:56:43 PM 1
dev-52 2/7/2020 5:56:52 PM 2
dev-52 2/7/2020 5:57:00 PM 3
dev-52 2/7/2020 5:57:49 PM 4
dev-52 2/7/2020 5:59:19 PM 5
dev-52 2/7/2020 6:01:51 PM 6
dev-52 2/7/2020 6:06:21 PM 7
dev-52 2/7/2020 6:14:51 PM 8
dev-52 2/7/2020 6:31:23 PM 9
dev-52 2/7/2020 6:47:54 PM 10
dev-52 2/7/2020 7:04:26 PM 11
dev-52 2/7/2020 7:20:58 PM 12
我想返回之间的差异first
and last
计数排序依据updated_at
最后updated_at
where
acteename
等于我从不同表中获得的某个名称
IQueryable<Events> list = _DBcontext.Events.GroupBy(p => p.ActeeName)
.Select(g => new
{
acteename = g.Key,
lastupdated = g.OrderByDescending(p => p.UpdatedAt).First(),
firstcount = g.OrderBy(p => p.UpdatedAt).First().Count,
lastcount = g.OrderByDescending(p => p.UpdatedAt).First().Count
})
.Select(x => new { x.acteename,x.lastupdated, diff = x.lastcount - x.firstcount })
.Where(a => a.acteename == item.AppName)
.ToList();
出现以下错误:
无法隐式转换类型'System.Collections.Generic.List<<anonymous type: string acteename,
TestApp.Models.Events lastupdated, int diff>>'
to
'System.Linq.IQueryable<TestApp.Models.Events>'
。明确的
存在转换(您是否缺少演员表?)
预期输出:
dev-52 2/7/2020 7:20:58 PM 11
有点卡住了,不确定 LINQ 查询是否正确,任何帮助都会有用:)
Update:
我运行的确切查询:
var list = from p in _DBcontext.AppProcessCrashEvents
where p.Actee == item.AppGuid
group p by p.Actee
into gList
select new
{
acteenamex = gList.Key,
lastUpdated_at = gList.OrderBy(x => x.UpdatedAt).Last().UpdatedAt,
diff = gList.OrderBy(x => x.UpdatedAt).Last().CrashCount -
gList.OrderBy(x => x.UpdatedAt).First().CrashCount
};