【发布时间】:2016-09-10 16:21:45
【问题描述】:
我使用以下代码删除实体框架中的最后 N 条记录:
取最后N个元素的扩展方法,取自here:
public static IEnumerable<T> TakeLast<T>(this IEnumerable<T> source, int N)
{
return source.Skip(Math.Max(0, source.Count() - N));
}
删除最后N个元素:
MyDbContext.MyDbSet.RemoveRange(MyDbContext.MyDbSet.TakeLast(N));
有效吗?我不想重新发明轮子。也许我错过了一些现有的功能,比如 collection.RemoveLast (虽然我第一次努力找不到)?
【问题讨论】:
-
EF 提供
Remove根据要求删除的内容。我认为,TakeLast将遍历数据库以获取最后一个元素,如果您有大量数据,这是有效的。跳过所有以前的数据对我来说听起来不太好。输入TakeLast的东西DbSet.LastOrDefault并删除该项目 -
@Eldho:就我而言,我不仅要删除最后一个元素,还要删除最后一个元素(其中几个)。
-
RemoveRange可以,但是你如何获得最后的元素
标签: c# entity-framework entity-framework-6