2014-01-08 27 views
0

我能夠使用強類型的LINQ擴展:.INCLUDELINQ包括擴展 - 向下鑽取

result = (from A in context.Transactions.Include(_ => _.TransactionDetails) 
      where A.TransactionId == transactionId 
      select A).SingleOrDefault(); 

但是我不能在TransactionDetails走得更遠。我的TransactionDetails也有一個導航名爲用戶但是我不知道如何把它。 TransactiomDetails裏面的可用選項是集合的常規擴展(例如First; FirstOrDefault等)。

我能夠使用常規的字符串的方法(即我想避免)做它:

result = (from A in context.Transactions.Include(_ => _.TransactionDetails) 
             .Include("TransactionDetails.User") 
      where A.TransactionId == transactionId 
      select A).SingleOrDefault(); 

感謝

+0

你可以做這樣的事情它將工作: var query = dataContext.OrderItems.Include(「Product」)。Include(「Product.OrderItemTypes」)。ToList(); 從現在起,您可以訪問產品,也可以通過產品訪問OrderItemTypes。 – Mariusz

回答

2

使用此:

result = context.Transactions 
       .Where(t => t.TransactionId == transactionId) 
       .Include(t => t.TransactionDetails.Select(u => u.User)) 
       .FirstOrDefault(); 
+0

因此,在LINQ查詢中,我有它不可能? –

+0

也許這是可能的,但這是正確的方法。這將包括您的TransactionDetails和用戶 –

+0

我的問題是由於我過去做過的一些SQL生成分析,並且通常使用擴展直接訪問上下文EF會產生更多的查詢獲得相同的數據。 –