更新Linq查询返回的结果集中的列值

时间:2009-03-26 08:01:50

标签: c# linq

我想更新linq查询返回的结果集中列的值。

我的代码是这样的

var result=from r in db.contents 
select new { match = r.text, id = r.id, index1 = (long)-1}

-- some calculation to find index value --

-- now update r.index=calculatedIndexValue for each record in result

这种操作可能吗?

2 个答案:

答案 0 :(得分:1)

LINQ是一种查询语言 - 不是编辑语言。对于实体操作(更改等),您需要使用数据上下文/实体管理器等面向对象的部分。所以基本上,您需要:

  • 使用存储过程代替(或)
  • 在输出中包含完整实体(r)(单独或在anon类型内);更新此对象,并调用上下文“保存”方法(SubmitChanges()等)。

答案 1 :(得分:0)

不要这么认为,不是不做新的查询(或重写原文),以便它返回非匿名类型(即使用linq 2 sql或实体生成的类型)。