我用下面的代碼實體框架中刪除最後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