c# – Linq Sum inline

有可能做点什么吗?

实体(有3个属性)
—> int A
—> int B.
—> int C

from record in dbset
select new Entity  
{  
    A = record.A  
    B = record.B 
    C = A * B  
}
最佳答案
使用object initialization syntax时,只能将属性分配给构造时可用的字段.因此,如果您希望从A和B计算C,则有两个选项.您可以从记录中读取这些属性:

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

更复杂的情况可能使以这种方式重复A和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的建议制作一个getter属性.

转载注明原文:c# – Linq Sum inline - 代码日志