如何从具有相同属性值的列表中删除项(计数大于2)

时间:2019-02-18 18:50:04

标签: c# asp.net-mvc asp.net-core-mvc

我有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);

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

完成。