Linq Sum inline

本文关键字:inline Sum Linq | 更新日期: 2023-09-27 18:13:24

有可能这样做吗?

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

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

Linq Sum inline

在这个特定的示例中,使用

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

当使用对象初始化语法时,您只能将属性分配给构造时可用的字段。如果你想用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

所建议的那样