Osh*_*ati 0 c# linq entity-framework
这不是一个好方法......!有谁能说为什么?
var dbc= new SchoolContext();
var a=dbc.Menus.ToList().Select(x=> new {
x.Type.Name,
ListOfChildmenus = x.ChildMenu.Select(cm=>cm.Name),
ListOfSettings = x.Settings.SelectMany(set=>set.Role)
});
Run Code Online (Sandbox Code Playgroud)
因为当您调用.ToList()或.FirstOrDefault()依此类推(当您枚举时),您的查询将被执行.
所以,当你dbc.Menus.ToList()从数据库中带入所有菜单的内存,而你却不希望如此.
您只想将您选择的内容(子菜单列表和设置列表)引入内存.
相关的进一步阅读:http://www.codeproject.com/Articles/652556/Can-you-explain-Lazy-Loading - 可能你在使用延迟加载
如果你想为你的IQueryable添加一个过滤器,你可能会读到有关可见的,可疑的http://blog.micic.ch/net/iqueryable-vs-ienumerable-vs-ihaveheadache之间的区别