Linq Sum内联

时间:2013-05-13 17:16:42

标签: c# linq

有可能做点什么吗?

实体(含3个属性)
---> int A ---> int B
---> int C

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

2 个答案:

答案 0 :(得分:4)

在此具体示例中,使用

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

答案 1 :(得分:3)

使用object initialization syntax时,您只能为施工时可用的字段指定属性。因此,如果您希望CA计算B,则有两种选择。您可以从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计算出来,那么您可以根据@ vc74

的建议制作一个getter属性