我由一個外鍵關係連接的兩個對象,我使用的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,在運行時我得到了連接未打開的錯誤,但這是設計。 –