linq扩展方法,如何更新单个项的多个属性?

时间:2012-08-15 13:03:46

标签: linq ado.net sql-update linq-extensions

在我的数据库中,我有一个我想要更新的项目。我尝试过做这样的事情,但它不起作用:

db.Items.Where(t => t.Id == itemId).Select(t =>
            {
                t.CurrentValue = 99;
                t.TotalValue = 999;
            });

这段代码有什么作用,但我认为这是低效的(我错了吗?):

db.Items.Single(t => t.Id == itemId).TotalValue = 999;
db.Items.Single(t => t.Id == itemId).CurrentValue = 99;
db.SaveChanges();

有没有办法使用单个查询更新单个对象的不同属性?

1 个答案:

答案 0 :(得分:3)

你是对的,多次运行db.Items.Single(...)可能不是最理想的。

调用一次然后引用其属性应该更有效:

var item = db.Items.Single(t => t.Id == itemId);
item.TotalValue = 999;
item.CurrentValue = 99;
db.SaveChanges();