我使用以下代码在Entity Framework中删除最后N条记录:
从这里获取的扩展方法以获取最后N个元素:
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(尽管我在第一次尝试中找不到它)?
Remove
方法来满足需求中的删除操作。我认为,TakeLast
会遍历整个数据库以获取最后一个元素,如果数据量很大,则效率低下。跳过所有先前的数据对我来说不是很好。尝试使用TakeLast
,其中您可以获得DbSet.LastOrDefault
并删除该项。 - EldhoRemoveRange
是可以的,但是如何获取最后几个元素呢? - Eldho