我有Jo卡列表,我要删除VehicleID
count
大于两个的职位卡
这是我的尝试。
var OpenJobCards = await _context.WorkshopJobCards.Include(wjc => wjc.WorkshopJobCardCategory).Where(wjc => wjc.Job_Card_Closed == false).ToListAsync() ;
OpenJobCards.Remove(OpenJobCards.GroupBy(wjc => wjc.VehicleID).Count() >2);
答案 0 :(得分:1)
您正在使用DBContext。如果是这样,还请记住,最好在可能的地方使用Queriable,以便在数据库端进行过滤,并且不会将其提取到应用程序内存中
var listToRemove = await _context.WorkshopJobCards.Include(wjc => wjc.WorkshopJobCardCategory)
.Where(wjc => wjc.Job_Card_Closed == false).GroupBy(wjc => wjc.VehicleID)
.Where(t => t.Count() >2)
.Select(x => new OpenJobCard() {Id = x.Key});
_context.entity.RemoveRange(listToRemove);
答案 1 :(得分:1)
根据您的评论,似乎您实际上是在以错误的方式看待这个问题。如果车辆具有工作卡的集合,而您的最终目标是仅显示分配了少于2个工作卡的车辆,则只需执行以下操作:
var vehicles = await _context.Vehicles.Where(x => x.JobCards.Count() < 2).ToListAsync();
完成。