【问题标题】:Can we write Update statement in linq?我们可以在 linq 中编写更新语句吗?
【发布时间】:2013-04-22 07:10:57
【问题描述】:

我们可以在 linq 中编写更新语句吗?

示例:

var query = Update customer set isEdit = 1 where id = 1

谢谢

【问题讨论】:

    标签: linq linq-to-sql


    【解决方案1】:

    不,你不能。 LINQ 中的 Q 代表 Query

    你可以做的是:

    foreach(var c in customer.Where(x => x.Id == 1))
        c.isEdit = 1;
    

    【讨论】:

    • 在Linq To SQL中,这个函数不是每行都命中数据库吗?
    • @Scorpi0:很可能,是的。但是因为客户的 ID 可能是唯一键,所以这并不重要,因为只有一行。
    • 我觉得这对初学者来说非常危险。也许 customer.Where(x => x.Id == 1).FirstOrDefault() 更适合 OP。
    • @Scorpi0:那会改变查询的含义。
    【解决方案2】:

    您可以通过使用类ListForEach 方法执行“看起来像Linq”查询来缩短更新:

    var toUpdate = customer.Where(c => c.id == 1).ToList();
    toUpdate.ForEach(c => c.isEdit = 1);
    

    【讨论】:

      【解决方案3】:

      是的,你可以,see my answer here

      Foo foo=new Foo { FooId=fooId }; // create obj and set keys
      context.Foos.Attach(foo);
      foo.Name="test";
      context.SubmitChanges();
      

      在您的 Dbml 中为所有属性设置 UpdateCheck="Never"。

      这将生成一个更新语句,而无需先进行选择。

      【讨论】:

        猜你喜欢
        • 2016-08-14
        • 2017-02-27
        • 2019-07-23
        • 2011-03-08
        • 1970-01-01
        • 2015-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多