2017-06-14 217 views
0

我目前在C#中有一个公式,用于Lightswitch实体/表(H​​ouseIncome)中的计算属性。在Lightswitch中,如何根据单独表中的记录中的数据在实体/表中计算字段/属性?

result = NumberInHouseHold >= 1 
? (AnnualHouseHoldIncome/(7880 + (NumberInHouseHold * 4180))) 
: 0; 

NumberInhousehold的数据类型为Decimal。 AnnualHouseHoldIncome是Money的一种数据类型。这两个数字是每年更改的变量。 PFPLevel是具有百分比数据类型的计算属性。对于此表中的每条记录,还有一个带有日期数据类型的EmploymentDate属性。

此计算2017年,但在2018年的伟大工程,以及随后的几年中,我将不得不在PFPLevel字段中显示将不再是准确的,新准则和信息重新编写计算领域2017年

我希望根据HouseIncome表中记录的数据和根据就业日期从FPLGuidlines表中提取的变量进行PFPLevel计算。因此,如果2017年的某个人的就业日期为2017年6月17日,该记录将根据NumberInHousehold,AnnualHouseHoldIncome和2017年记录中的指导方针计算PFP级别。

在FPLGuidelines表中会有四个字段; Id,YearID,BaseIncome,PerIndividulalAmount,每年都会有新的记录。我不确定每个这些属性/字段需要哪些数据类型。

回答

1

一种选择是使用以下类型的实体数据类型:

example entity fields

除了以下类型的方法,以你的计算性能:

partial void PFPLevel_Compute(ref decimal result) 
{ 
    if (EmploymentDate.HasValue) 
    { 
     var hiy = EmploymentDate.Value.Date.Year; 
     var gl = DataWorkspace.ApplicationData.FPLGuidelines.Where(e => e.Year == hiy).Execute().FirstOrDefault(); 
     if (gl != null) 
     { 
      result = NumberInHouseHold >= 1 
      ? (AnnualHouseHoldIncome/(gl.BaseIncome + (NumberInHouseHold * gl.PerIndividualAmount))) 
      : 0; 
     } 
    } 
} 

上面的例子是基于您的HouseIncome.EmploymentDate属性是可以为空的DateTime。

+0

Crhis。您的解决方案看起来接近,但我得到一个错误:**严重\t代码\t说明\t线\t抑制状态 错误\t CS1061 \t“的ApplicationData”不包含“FPLGuidlines”的定义,并没有扩展方法“FPLGuidlines”接受可以找到类型'ApplicationData'的第一个参数(您是否缺少using指令或程序集引用?) Active ** – Mark

+0

Chris, 现在,我遇到的唯一问题是在以下var行中。 var hiy = EmploymentDate.Date.Year; 如果日期以红色下划线并显示以下消息。 **'DateTime?'不包含'Date'的定义并且没有接受类型'DateTime?'的第一个参数的扩展方法'Date'。 (缺少使用指令或程序集引用?)** – Mark

+0

如果您的数据源被命名为ApplicationData以外的其他名称,则需要更改DataWorkspace.ApplicationData以反映您的数据源,例如, DataWorkspace.YourDataSourceName。至于日期错误,我会根据我的示例HouseIncome.EmploymentDate属性是不可空的。我将更新我的示例以演示可空的DateTime的方法。 –

相关问题