使用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
相关产品推荐
相关产品推荐

