2013-05-13 36 views
4

可以做些什麼嗎?Linq Sum inline

實體(3個屬性)
--->的INT A
---> INT乙
--->詮釋三

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

回答

3

使用object initialization syntax時,您只能將屬性分配給施工時可用的字段。所以,如果您想從AB中計算出C,則有兩種選擇。你可以閱讀這些屬性關閉的record

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

更復雜的情況可能會使它站不住腳重複的AB定義以這種方式。例如,重複一個關於如何計算這些屬性的長定義可能在計算上是昂貴的。當類似的代碼重複時,閱讀也很難。在這些情況下,您可能希望有一個收集相關信息的媒介選擇類決賽前選擇:

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始終會計算過的AB,那麼你可以做一個getter屬性,正如@ vc74所建議的

4

在這個具體的例子中,使用

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