gpt4 book ai didi

c# - 无法将属性或索引器 'AnonymousType#1.FirstName' 分配给 -- 它是只读的

转载 作者:太空宇宙 更新时间:2023-11-03 21:26:10 25 4
gpt4 key购买 nike

我正在尝试制作一个函数,将查询结果值更改为文本框中的值。我可以运行 LINQ 查询,获取值,并且读取可以完美打印...但是当我尝试将查询值更改为文本框值时,出现以下错误:

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

代码如下:

    private void editQuery(int contactID)
{
ContactLINQDataContext context = new ContactLINQDataContext("Data Source=WORK-PC;Initial Catalog=Steve Harvey Team;Integrated Security=True");
var editContact = (from Contacts in context.Contacts
join prop in context.Properties on Contacts.Address equals prop.PropertyID
join spouse in context.Contacts on Contacts.Spouse equals spouse.ContactID
where Contacts.ContactID == contactID
select new
{
ID = Contacts.ContactID,
FirstName = Contacts.FirstName,
LastName = Contacts.LastName,
FirstName2 = spouse.FirstName,
LastName2 = spouse.LastName,
Street = prop.Street,
City = prop.City,
State = prop.State,
ZIP = prop.ZIP,
Phone1 = Contacts.Phone,
Phone2 = Contacts.AltPhone,
Email = Contacts.Email,
ContactType = Contacts.Type,
Assets = Contacts.Assets,
Notes = Contacts.Notes,
}).First();

editContact.FirstName = firstNameBox1.Text;

我认为这可能是因为我正在尝试更改 var 类型,但我不知道如何更改类型并仍然更新值。有什么想法吗?

更新

我找到了一个最终对我有用的解决方案。感谢发帖者的回复,让我走上正轨。我在下面的评论中详细说明了我的解决方案。

最佳答案

这是因为您正在尝试更改匿名 类型的值 - 没有var 类型这样的东西;这只是告诉编译器从赋值运算符右侧的表达式推断变量的类型。匿名类型的属性始终是只读的。您需要创建另一个实例:

editContact = new {
editContact.Id,
FirstName = firstNameBox1.Text,
LastName = editContact.LastName,
...
};

请注意,您需要以相同的顺序指定具有相同类型的所有属性 - 这样两个匿名类型创建表达式将属于相同类型。

关于c# - 无法将属性或索引器 'AnonymousType#1.FirstName' 分配给 -- 它是只读的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26916695/

25 4 0