2013-04-30 52 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表达式,所以它什么都不做。