尝试通过处理复杂查询来获得订单
trying to get a orderby working on complex query
我无法弄清楚 where/how 在此查询中放置 orderby。
我需要按字段分支排序的查询(来自 Driver_Detail.assigned_area_name.
我已经在多个地方以多种方式尝试过,但都被忽略了。
var stopsList = (from s in context.Mobile_Stops
join d in context.Driver_Detail on s.driver_number equals d.driver_number
where EntityFunctions.TruncateTime(s.requested_delivery_dateTime) == dateToUse.Date
group new { s, d } by new { s.driver_number } into g
select new DriverDaySummary
{
driver_Number = g.FirstOrDefault().d.driver_number,// d.driver_number,
driver_Name = g.FirstOrDefault().d.first_name,
branch = g.FirstOrDefault().d.assigned_area_name,
Total_Stop_Count = g.ToList().Select(x => x.s).Count(),
Delivered_Stops = g.ToList().Select(x => x.s).Where(x => x.status == 30).Count(),
Exceptoined_Stops = g.ToList().Select(x => x.s).Where(x => x.status == 40).Count(),
Open_Stops = (g.ToList().Select(x => x.s).Count() - (g.ToList().Select(x => x.s).Where(x => x.status == 30).Count() + g.ToList().Select(x => x.s).Where(x => x.status == 40).Count())),
}).Distinct().ToList();
只需按 branch
排序,因为按 assigned_area_name
排序在这里是不可能的,因为您按 driver_number
分组并先取 assigned_area_name
您可以添加 OrderBy
就在 Distinct
.
之后
Selvin在评论中提供了答案
我无法弄清楚 where/how 在此查询中放置 orderby。 我需要按字段分支排序的查询(来自 Driver_Detail.assigned_area_name.
我已经在多个地方以多种方式尝试过,但都被忽略了。
var stopsList = (from s in context.Mobile_Stops
join d in context.Driver_Detail on s.driver_number equals d.driver_number
where EntityFunctions.TruncateTime(s.requested_delivery_dateTime) == dateToUse.Date
group new { s, d } by new { s.driver_number } into g
select new DriverDaySummary
{
driver_Number = g.FirstOrDefault().d.driver_number,// d.driver_number,
driver_Name = g.FirstOrDefault().d.first_name,
branch = g.FirstOrDefault().d.assigned_area_name,
Total_Stop_Count = g.ToList().Select(x => x.s).Count(),
Delivered_Stops = g.ToList().Select(x => x.s).Where(x => x.status == 30).Count(),
Exceptoined_Stops = g.ToList().Select(x => x.s).Where(x => x.status == 40).Count(),
Open_Stops = (g.ToList().Select(x => x.s).Count() - (g.ToList().Select(x => x.s).Where(x => x.status == 30).Count() + g.ToList().Select(x => x.s).Where(x => x.status == 40).Count())),
}).Distinct().ToList();
只需按 branch
排序,因为按 assigned_area_name
排序在这里是不可能的,因为您按 driver_number
分组并先取 assigned_area_name
您可以添加 OrderBy
就在 Distinct
.
Selvin在评论中提供了答案