您好我正在尝试通过指定需要包含的元素列表来使用预先加载。这是我写的表达式:
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))
}
我不确定我所写的内容是否正确并且会做我期望的内容并且我无法测试应用程序一段时间因为有一系列编译错误,因为某些模型更改,需要在申请被测试之前得到纠正。
这就是我相信这个表达会做的事情请纠正我如果我错了:
对于List中的每个元素导致AksAssumptionData得到 MortalityTableMainInsuredMale并包含它
如果这不正确那么我怎样才能实现我在lambda表达式中所说的内容?
答案 0 :(得分:0)
items
应该是TEntity
的列表...为什么你会有一个lambda表达式列表?GetCoverPrefetch
应该返回IEnumerable<string>
,但是您希望字符串包含什么?您没有从函数返回字符串。你只是使用ForEach
什么都不做 - 它会给你一个编译错误。您应该使用普通的foreach
并使用yield return
,或只使用return new Prefetch<ContractCoverInstance>().Include(...)
,但Include返回的内容不是IEnumerable<string>
,而是List<LambdaExpression>
。items
返回了GetCoverPrefetch()
它只包含你传入的lambda表达式。所以它什么也没做。