繁体   English   中英

C#实体 - 按ID删除项目 - 要删除的ID在另一个列表中

[英]C# Entity - Delete Items by ID - ID to delete are in an other list

我需要删除由实体6管理的集合中的项目。必须删除的项目位于另一个列表中

目前我这样做:

 idToDelete = model.Courses.Where(x => x.Deleted).Select(x => x.Id);

 entity.Courses
        .Where(ent => idToDelete.Contains(ent.Id))
        .ToList()
        .ForEach(ent =>
        _contexte.Entry(ent).State = EntityState.Deleted);

这段代码工作正常。

如何只在一个linq指令中执行相同的操作?

entity.Courses.RemoveRange(entity.Courses.Where(e => e.Deleted));

实际上,再次阅读您的问题,看起来ID列表在视图模型中,并且您的实体模型可能没有Deleted属性。 因此,大概你需要更像你拥有的东西:

_contexte.Courses.RemoveRange(
    _context.Courses.Where(c => model.Courses.Where(x => x.Deleted).Select(y => y.Id).Contains(c.Id));

......或更可读:

var idsToDelete = model.Courses.Where(c => c.Deleted).Select(e => e.Id);
var entitiesToDelete = _contexte.Courses.Where(c => idsToDelete.Contains(c.Id));
_contexte.Courses.RemoveRange(entitiesToDelete);

您可以使用let在查询中声明idToDelete

(from ent in in entity.Courses
 let idsToDelete = model.Courses.Where(x => x.Deleted).Select(x => x.Id)
 where idsToDelete.Contains(ent.Id)
 select ent).ToList()
 .ForEach(ent => _contexte.Entry(ent).State = EntityState.Deleted);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM