4

これをリンクすることは可能ですか?

エンティティ (3 つのプロパティを持つ)
---> int A
---> int B
---> int C

from record in dbset
select new Entity  
{  
    A = record.A  
    B = record.B 
    C = A * B  
}
4

2 に答える 2

4

この特定の例では、

from record in dbset
select new Entity  
{  
    A = record.A  
    B = record.B 
    C = record.A * record.B  
}
于 2013-05-13T17:18:37.953 に答える
3

オブジェクト初期化構文を使用する場合、構築時に使用可能なフィールドにのみプロパティを割り当てることができます。Cしたがって、 とから計算したい場合は、2 つのオプションがAありBます。これらのプロパティを次から読み取ることができますrecord

from record in dbset
select new Entity  
{  
    A = record.A  
    B = record.B 
    C = record.A * record.B  
}

より複雑な状況では、このようにAandの定義を繰り返すことができなくなる可能性があります。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 で提案されているように、ゲッター プロパティを作成できます。

于 2013-05-13T17:29:32.447 に答える