簡體   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