簡體   English   中英

如何使用LINQ創建數據庫查詢以通過具有ID列表並避免循環來擦除行

[英]How to create a database query with LINQ to erase rows by having a list of ID's and by avoiding loops

我是LINQ的新手,所以如果您能徹底解釋您的答案,我將不勝感激。 我想做的是有一個名為ContentTable的表。 該ContentTable具有不同的列和行,並且其中一列正在使用EntityId。

在此處輸入圖片說明

在我的方法中,我從某處收到一個列表中的ID列表。 我不想遍歷此列表並為每個ID查詢數據庫,因為那會很昂貴,但是我想要一個使用列表中的ID與表中的EntityID匹配的查詢,如果有這樣的查詢,匹配,我從表格中刪除了整行。 你能幫我嗎? 提前致謝!

您可以使用實體框架擴展來做到這一點。 就像是:

this.Container.Devices.Delete(
             o => o.Id == 1,
             o => o.Id == 2
        );

這樣的事情可能會有所幫助,但是,如果表太大(百萬),Linq to sql將鎖定表。 同樣,對於每個實體,它也會發出一個T-SQL Delete語句來刪除該實體。

   public void DeleteContents(List<int> entityIds)
   {
        using (Yourcontext db = new Yourcontext())
        {
            IQueryable<ContentTable> contents = db.ContentTable.Where((x) => ids.Contains(x.EntityId));

            db.ProductComplianceRules.DeleteAllOnSubmit(contents);
        }
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM