LINQPad LINQ到SQL更新与匿名类型

问题描述:

说我有在LINQPad以下查询(用C#声明(S)模式)针对一个SQL数据库:LINQPad LINQ到SQL更新与匿名类型

var query = (from te in Time_Entries 
      select new { te.Period, te.Company_Name }).FirstOrDefault(); 

如果我想以更新的周期值选择的记录,我认为我可以做类似:

query.Period = 5; 
SubmitChanges(); 

但不幸的是,我上query.Period分配行错误:

Property or indexer 'AnonymousType#1.Period' cannot be assigned to -- it is read only 

是否可以通过这种方式或以类似的方式执行更新?

不,你不能。匿名类型不能具有可修改的属性。 从文档:

匿名类型提供一种方便的方式来封装一组 只读属性到一个单一的对象,而不必明确 第一个定义一个类型。

无论如何它并没有什么意义。匿名类型有时是非常有用的,但不是当你需要使用LINQ2SQL实体跟踪和更新...

+0

Gotcha。感谢您的及时回复! – Overhed 2013-03-09 23:11:03

那么,答案已经在

select new {} 

即使它不会是一个匿名类型,它可能是一个插入... ...

其余的回答是由walther回答。

+0

好点。当你使用new关键字来实例化一个新对象时,很明显你不能更新原始数据集。谢谢。 – Overhed 2013-03-11 13:28:34