我正在尝试以用户选择的strLang所依赖的正确语言选择用户列表和每个用户JobTitle。
类似的东西:
IList<User> myData;
myData = Context.Users.Where(u => u.Location == strLocation)
.Include(u => u.JobTitles.Where(e => e.Language == strLang))
.ToList();
但似乎Include不喜欢Where子句
答案 0 :(得分:1)
您无法有条件地仅包含相关集合中的少数几个实体,因此您应该使用投影来获取所需的内容:
IList<User> myData;
var temp = Context.Users.Where(u => u.Location == strLocation)
.Select(u => new
{
User = u;
Locations = u.JobTitles.Where(e => e.Language == strLang));
});
foreach(var t in temp)
{
User user = t.User;
user.Locations = t.Locations;
myData.Add(user);
}
答案 1 :(得分:1)
你不能使用&#34; Include&#34;方法,因为它只采用导航属性。
免责声明:我是github上EF +项目的所有者。
EF +查询IncludeFilter 可让您轻松过滤相关实体:
// using Z.EntityFramework.Plus; // Don't forget to include this.
IList<User> myData;
myData = Context.Users.Where(u => u.Location == strLocation)
.IncludeFilter(u => u.JobTitles.Where(e => e.Language == strLang))
.ToList();
您可以找到项目here
您可以找到文档here
在代码背后,IncludeFilter完全像Alexander使用投影回答。