如何指定强类型导航属性包括

时间:2013-08-27 10:10:59

标签: c# linq entity-framework lambda include

我正在编写一个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"

我的问题是如何在代码中的Nodes中包含每个Device的{​​{1}}属性?

1 个答案:

答案 0 :(得分:2)

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