【问题标题】:How to create a database query with LINQ to erase rows by having a list of ID's and by avoiding loops如何使用 LINQ 创建数据库查询以通过拥有 ID 列表和避免循环来擦除行
【发布时间】:2017-04-28 17:07:15
【问题描述】:

我是 LINQ 的新手,所以如果您能彻底解释您的答案,我将不胜感激。我想要做的是我有一个名为 ContentTable 的表。此 ContentTable 具有不同的列和行,其中一列使用 EntityId。

在我的方法中,我从某个地方收到了列表中的 ID 列表。我不想遍历这个列表并查询每个 ID 的数据库,因为这会很昂贵,但我想要一个使用列表中的 ID 与表中的 EntityID 匹配的查询,如果有这样的匹配,我从表中删除整行。你能帮帮我吗?提前致谢!

【问题讨论】:

    标签: c# mysql sql linq


    【解决方案1】:

    这样的事情可能会有所帮助,但是如果表太大(数百万)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);
            }
       }
    

    【讨论】:

      【解决方案2】:

      您可以使用Entity Framework Extensions 来执行此操作。比如:

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

      【讨论】:

      • 你确定这是发生在一个命令中,还是多个命令和一个事务
      猜你喜欢
      • 1970-01-01
      • 2012-10-07
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多