2017-06-14 213 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的方法。 –

相關問題