[英]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.