我由一个外键关系连接的两个对象,我使用的DataModel的对象与地图相关的对象:抓取使用LINQ和EF
事件:1 ------ *:资产
我写了获取所有资产,对于一个给定[eventPublicId]
List<Asset> assetList =
ReliableExecution.RetryWithExpression<Event, List<Asset>>
(u => u.FirstOrDefault(x => x.PublicId == eventPublicId).Assets.ToList()).ToList();
我的问题是,我不得不打电话ToList()两次,这看起来很笨拙的查询。此外,我不得不使用FirstOrDefault,但是当我试图使用[Where]或其他任何东西时,它不会编译。
有没有其他更好的方式如何可以重写这段代码?
这是RetryWithExpression签名参考:
public static TValue RetryWithExpression<T, TValue>(Func<ObjectSet<T>, TValue> func, Int32 retryInfiniteLoopGuard = 0)
where T : class
为什么你必须调用'ToList()'两次?你得到什么编译器错误? – Slauma
如果我省略了第一个Assets.ToList,我得到一个编译错误:无法将lambda表达式转换为委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型。 如果我省略了第二个ToList,在运行时我得到了连接未打开的错误,但这是设计。 –