これをリンクすることは可能ですか?
エンティティ (3 つのプロパティを持つ)
---> int A
---> int B
---> int C
from record in dbset
select new Entity
{
A = record.A
B = record.B
C = A * B
}
この特定の例では、
from record in dbset
select new Entity
{
A = record.A
B = record.B
C = record.A * record.B
}
オブジェクト初期化構文を使用する場合、構築時に使用可能なフィールドにのみプロパティを割り当てることができます。C
したがって、 とから計算したい場合は、2 つのオプションがA
ありB
ます。これらのプロパティを次から読み取ることができますrecord
。
from record in dbset
select new Entity
{
A = record.A
B = record.B
C = record.A * record.B
}
より複雑な状況では、このようにA
andの定義を繰り返すことができなくなる可能性があります。B
たとえば、これらのプロパティの計算方法について長い定義を繰り返すと、計算コストが高くなる可能性があります。また、同様のコードが繰り返されると読みにくくなります。そのような場合、最終選択の前に関連情報を収集する中間選択クラスが必要になる場合があります。
from record in dbset
select new { A = someComplicatedFunction(record.A), B = someComplicatedFunction(record.B) } into info
select new Entity { A = info.A, B = info.B, C = info.A * info.B }
もちろん、C
が常にA
とから計算される場合B
、@ vc74 で提案されているように、ゲッター プロパティを作成できます。