Linq 无法将CRM匿名类型3分配给

Linq 无法将CRM匿名类型3分配给,linq,dynamics-crm-2011,anonymous-types,Linq,Dynamics Crm 2011,Anonymous Types,我们有Dynamics CRM 20111。在自定义实体上,我们有一个名为new_FlagReported的字段,它是数据类型2选项集。在C中,我需要将这个标志更新为true 我使用Linq收集所有需要更新的记录,并使用该集合编码: foreach (var rec in CustomRecs) { xrm.ClearChanges(); rec.new_FlagReported = true; xrm.UpdateObject(rec);

我们有Dynamics CRM 20111。在自定义实体上,我们有一个名为new_FlagReported的字段,它是数据类型2选项集。在C中,我需要将这个标志更新为true

我使用Linq收集所有需要更新的记录,并使用该集合编码:

foreach (var rec in CustomRecs)
{
        xrm.ClearChanges();

        rec.new_FlagReported = true;
        xrm.UpdateObject(rec);
        xrm.SaveChanges();
}
但是,赋值为true会产生编译时错误:

无法将索引“AnonymousType3.new_FlagReported”的属性分配给-它是只读的

我不明白为什么这个字段是只读的

在此上下文中,什么是匿名类型? 与任何其他类型相比,匿名类型3是什么? 我的领域是如何变得匿名的? 我可以以非匿名方式重新创建它吗? 如何更新此字段

谢谢你的帮助

更新: 这就是我现在拥有的,没有编译时错误:

var CustomRecs= from cr in xrm.new_customRecordSet
                           where cr.new_crID.Equals(sg.Id)
                           select cr;

            foreach (var rec in CustomRecs)
            {
                xrm.MergeOption = MergeOption.OverwriteChanges;
                xrm.ClearChanges();
                rec.new_FlagReported = true;
                xrm.UpdateObject(rec);
                xrm.SaveChanges();
            }

可以肯定的是,字段是两个选项还是一个带有两个项目的选项?如果您使用的是早期绑定,您是否可以导航到新绑定的定义,并将其发布到您的问题中?这有两个选项。最后,我更改了LINQ Select以不指定字段名,遗憾的是,我没有在我的原始帖子中显示字段名。这允许我编写rec.new_FlagReported=true。但是,我不明白为什么这会有区别,因为收集的记录集仍然是var,而foreach循环作用于仍然指定为var的变量。相对于具有真实数据类型,使对象匿名的不是var吗?我已经在下面发布了我的最终代码。如果您的Linq查询说select new{new_FlagReported=cr.new_FlagReported},那么您是在告诉Linq创建一个新的匿名类型,其中包含一个名为new_FlagReported的字段。它不会自动映射到代理类。var关键字不会使类型匿名。工作linq查询的结果是可查询的,并且是强类型的。var只是说我不在乎隐式类型是什么。在处理匿名类型时必须使用它,因为匿名类型没有类定义,但使某些内容匿名的是新的{}。斯科特,谢谢你花时间解释。我将详细阅读这些内容,包括代理类。