2016-04-19 5 views
2
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(): ""; 
}); 

を使用せずに、いくつかのフィールドを選択しますが、そのSectionControlTabの同じ名前のフィールドに渡されていないか、私は2つの別々のselect文を試してみましたが、2番目はUserSelectionControlと私も持って見カントコピーしたい別のフィールド。 x.LinkedWorkControlを呼び出すと、再び重複します。LINQの - 私はCoverSelectionControlとUserSelectionControl新しい

以上、複雑な定義済みの型を使用すると、親から読み込み、viewModelの子を更新するだけで済みます。

新しいものを使用せずにいくつかのフィールドを更新するにはどうしますか?

答えて

2

Tuple.Createを使用できますが、基本的には問題が隠されています(また、until C# 7、構文が悪化しています)。フィールドの集合を表現するC#の方法は、オブジェクトとして(C#6.0現在)です。 newでオブジェクトを作成します。これを回避する方法はありません(Linqを使用)。

関連する問題