You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LINQ为嵌套模型属性赋值报错,如何正确赋值?

问题:如何为嵌套模型中的属性赋值?

模型定义

public class DesignListViewModel
{
    public IList<DesignViewModel> DesignList { get; set; } = new List<DesignViewModel>();
}

错误的赋值代码

尝试在控制器中用LINQ为DesignViewModel的DueDate属性赋值,代码如下:

var rModel = await _designService.Get(model); //rModel 类型为 DesignListViewModel

//尝试为 DueDate 属性赋值 
rModel.DesignList.Select(design => design.DueDate).FirstOrDefault() = new DateTime();

报错信息

The left-hand side of an assignment must be a variable, property or indexer


正确的解决方法

1. 为第一个元素的属性赋值

先获取集合中的目标对象,再直接修改其属性:

var firstDesign = rModel.DesignList.FirstOrDefault();
if (firstDesign != null)
{
    firstDesign.DueDate = new DateTime();
}

2. 为所有元素的属性赋值

如果需要批量修改集合中所有对象的DueDate,直接用foreach遍历操作:

foreach (var design in rModel.DesignList)
{
    design.DueDate = new DateTime();
}

原代码报错原因

Select(design => design.DueDate)是LINQ的投影操作,它返回的是DueDate属性的值,而非对原对象属性的引用。赋值操作的左侧必须是可修改的变量、属性或索引器,因此直接对投影结果赋值会触发错误。LINQ主要用于查询和转换数据,修改集合元素的属性应该直接操作原对象。


内容的提问来源于stack exchange,提问作者Jesus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:30:49