model.SectionControlTabs.ForEach(x =>
{
x.EffectiveDate = x.EffectiveDate?.Split(' ')[0];
x.LinkedWorkControlEffectiveDate = x.EffectiveDate != null? model.WorkControls
.Where(y => DateTime.Parse(y.EffectiveDate) <= DateTime.Parse(x.EffectiveDate))
.OrderByDescending(y => DateTime.Parse(y.EffectiveDate))
.Select(y => new { CoverSelectionControl = y.CoverSelectionControl.ToString(),
UserSelectionControl = y.UserSelectionControl.ToString()})
.DefaultIfEmpty()
.First().ToString(): "";
});
CoverSelectionControl和UserSelectionControl没有传递到它们的SectionControlTab的相同命名字段,我已经尝试了两个单独的select语句,但是第二个看不到UserSelectionControl,并且我还有一个我想复制的字段。如果再次调用x.LinkedWorkControl ...,它将是重复的。
上面使用复杂的定义类型,我只需要从父级读取并为viewModel更新子级即可。
如何在不使用new的情况下更新许多字段?
最佳答案
您可以使用Tuple.Create
,但这基本上隐藏了问题(until C# 7的语法更糟)。 C#表示一组字段的方式是作为一个对象(从C#6.0开始)。用new
创建一个对象。无法解决此问题(使用Linq)。