2013-04-30 48 views
-1

你好我試圖通過指定必須included.This元素的列表使用預先加載的名單我已經寫了expresion:預先加載包含元素的lambda表達式

public class Prefetch<TEntity> 
{ 
    private readonly List<LambdaExpression> items = new List<LambdaExpression>(); 

    public Prefetch<TEntity> Include<TPath>(Expression<Func<TEntity, TPath>> path) 
    { 
     this.items.Add(path); 

      return this; 
     } 
} 

private static IEnumerable<string> GetCoverPrefetch() 
    { 

     new Prefetch<ContractCoverInstance>().Include(x => x.Tariff.AksAssumptionData.ToList().ForEach(x => x.MortalityTableMainInsuredMale)) 
    } 

我我不確定我寫的內容是否正確,並且會做我期望的內容,而且我無法測試該應用程序一段時間,因爲有一系列編譯錯誤,由於某些模型更改,需要在應用程序被測試。

這是什麼,我相信這個表達式會盡請糾正我,如果我錯了:

對於列表中的每個元素導致AksAssumptionData得到 MortalityTableMainInsuredMale,並將其納入

如果這是不正確的,那麼我怎樣才能達到我剛纔在lambda表達式中所說的?

+5

我建議你用你的代碼糾正其他錯誤,測試這個查詢,如果你有問題,_then_回來。 – DGibbs 2013-04-30 08:17:00

+0

這是更多的sintax問題,然後是應用程序中的實際問題,並且系統中有些部分我無法觸及,必須爲其他人提供w8 – aleczandru 2013-04-30 08:19:42

+2

爲什麼不從外部測試代碼?複製類並提供一些虛擬數據來處理並不困難 – DGibbs 2013-04-30 08:21:15

回答

0
  1. items應該是一個列表TEntity ...爲什麼你會有一個lambda表達式列表?
  2. 你正在使用Include,就好像它是一個單例...在我看來,這不是一個好設計。
  3. GetCoverPrefetch根據簽名應該返回IEnumerable<string>,但是您希望字符串包含什麼?你沒有從函數返回一個字符串。你只是使用ForEach什麼都不做 - 它會給你一個編譯錯誤。您應該使用普通的foreach並使用yield returnreturn new Prefetch<ContractCoverInstance>().Include(...),但Include正在返回的不是IEnumerable<string>,而是List<LambdaExpression>
  4. 這沒有任何意義。即使你正確地從GetCoverPrefetch()返回items 它只會包含你傳入的lambda表達式,所以它什麼都不做。