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)。

10-02 01:37