2013-08-27 71 views
1

我寫一個EF庫和我的一個功能,您可以通過一個謂詞來找到特定的對象,同時指定包括如何指定強類型的導航屬性包括

IQueryable<T> FindBy(Expression<Func<T, bool>> predicate, 
        params Expression<Func<T, object>>[] includes) 

這個偉大的工程,但是的一個包括我想指定的是導航屬性的導航屬性。

我的電話目前看起來像這樣,如果指定爲字符串,那麼這將是"Folders.Devices"

var folder = _Folders.FindBy(f => f.FolderId == id, f => f.Devices).FirstOrDefault(); 

如果我來指定字符串這個額外的導航屬性將是

"Folders.Devices.Nodes" 

我的問題是我怎麼包括每個Device的內碼DevicesNodes財產?

回答

2
var folder = _Folders.FindBy(f => f.FolderId == id, f => f.Devices.SelectMany(x=>x.Nodes)).FirstOrDefault(); 
+1

謝謝,不太正確,但指出我在正確的方向。我不得不使用'f => f.Devices.Select(d => d.Nodes)' – Chris

+0

@Chris不是你的'Nodes'集合嗎?如果是的話,你的查詢將返回一個集合的集合?我不認爲這就是你想要的,我只是認爲你想要一個集合作爲第二個參數傳入。 –

+1

這是,但是當我嘗試你的代碼時,它拋出了一個異常,並告訴我使用'Select'後,它的工作! – Chris

相關問題