2013-07-08 58 views
3

編輯:爲什麼當我在我的LINQ to Entities查詢中使用GroupBy()時,結果中的導航屬性爲空?

我首先開發與EF代碼的應用程序,我有一個方法返回一個Dictionary<int,T>

public Dictionary<int, DocumentStationHistory> GetLastDocumentStationHistoryListOfDocuments(string criteria) 
{ 
     Dictionary<int, DocumentStationHistory> result = new Dictionary<int, DocumentStationHistory>(); 
     using (IUnitOfWork uow = new MyContext()) 
     { 
      DocumentStationHistoryRepository repository = new DocumentStationHistoryRepository(uow); 
      result = repository.All(). 
       Include(x => x.DocumentStation). 
       Where(criteria,new object[]{}). 
       OrderBy(d=>d.DocumentId). 
       OrderBy(d=>d.DocumentStationHistoryId). 
       GroupBy(g => (int)g.DocumentId). 
       ToDictionary(g => (int)g.Key, g => g.LastOrDefault()); 
      return result; 
     } 
} 

而且這是我的實體之間的關係:

enter image description here

但是,當此方法運行時,結果中包含的屬性(DocumentStation)爲null。我的錯誤在哪裏?

更新時間:

我測試了一下,如果我刪除.GroupBy(),它使導航屬性! 那麼我該如何解決這個問題呢?

+0

你不需要。所有() –

+0

@SamLeach:我需要的。所有(),因爲我想用一個標準 – Masoud

+0

默認情況下將過濾所有記錄篩選所有記錄。 –

回答

0

也有這個問題。我通過在group by之前執行.ToList()來解決它。因此,這將是:

result = repository.All(). 
     Include(x => x.DocumentStation). 
     Where(criteria,new object[]{}). 
     OrderBy(d=>d.DocumentId). 
     OrderBy(d=>d.DocumentStationHistoryId). 
     ToList(). 
     GroupBy(g => (int)g.DocumentId). 
     ToDictionary(g => (int)g.Key, g => g.LastOrDefault()); 
+0

但是,這個原因,首先從'數據庫'加載所有數據,然後'分組'他們,這會影響性能。 – Masoud

相關問題