2013-05-13 60 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 
}