オブジェクトイニシャライザ構文でオブジェクトを構築する場合、割り当てステートメントの1つでリストを反復処理し、そのプロパティに反復の出力を割り当てる方法はありますか?オブジェクトイニシャライザでリストを反復する
たとえば、私はPersonモデルをPersonビューモデルに変換しています(主にPersonモデルに遅延ロードされたプロパティがあり、再帰的な可能性がありますが、ビューはWeb上で切断されています。シリアル化される単一のPersonインスタンスが必要です)。私はまたenumerables上の.ForEach()
のような便利なもののnVentive Umbrella拡張を使用しています。私の個人モデルから人物ビューモデルの私のリストを出力するので、私はこのようにそれらを変換します
people.ForEach(p =>
returnPeople.Add(
new Person{
FirstName = p.FirstName,
ID = p.ID,
LastName = p.LastName,
MiddleName = p.MiddleName,
NamePrefix = p.NamePrefix,
NameSuffix = p.NameSuffix,
ParentsID = p.Parents == null ? 0 : p.Parents.ID,
PartnershipIDs = new List<int>(),
Sex = p.Sex.ToString()
}
)
);
私は人のモデル(people
)のコレクションを反復処理し、パーソン・ビュー・モデルのコレクションを移入しています(returnPeople
)。すべて正常に動作しますが、同じ文にそのPartnershipIDs
プロパティを設定したいと考えています。
//....
PartnershipIDs = p.Partnerships.ForEach(par => yield return par.ID)
//....
これは機能しません。コンパイラは構文が気に入らない。しかし、この設定でその機能を実現する方法はありますか?または、最初に1つのフィールド以外のすべてを含むPersonビューモデルを初期化してから、次の行に残りのフィールドを設定する必要がありますか?
古き良き適切 'foreach'ループが悪いのか? –