我用下面的代码实体框架中删除最后N个记录:删除最后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'将通过数据库遍历来获得最后一个元素,这是有效的,如果你有大量的数据。跳过所有以前的数据对我来说听起来不太好。在我来说,我想删除不仅最后一个元素,但最后的元素(几个): 你在哪里得到'DbSet.LastOrDefault'和删除元素 – Eldho
@Eldho 泰东西'TakeLast'。 – Bad
'RemoveRange'是好的,但你如何获得最后的元素 – Eldho