我有以下代码:
var db = Database.Open("Text");
var headers = db.Query("SELECT * FROM Headers");
//headers is now an IEnumerable<dynamic>
string s = headers[0].Text; // Works correctly
headers[0].Text = "Some string";
如果我尝试将“Some string”分配给标题的Text属性,我会收到以下错误:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: WebMatrix.Data.DynamicRecord contains no definition for Text.
如何将header对象转换为List / Array,以便我可以为其分配新值?
答案 0 :(得分:3)
问题是从WebMatrix返回的DynamicRecord
类实际上是“只读”的。 DynamicObject不允许设置Text
。
如果您想对值进行更改,则需要将此数据映射到您自己的类中,而不是将其保留在原始dynamic
类型中。