我有一个与其他实体(相关实体)有关联的实体。我正在尝试从主要实体返回不同的行,这些行需要包含来自相关实体的数据,因此我可以使用相关实体的下游属性。
以下是我正在使用的语句,但它没有返回任何行。最好的方法是什么?
以下是我的代码。
return context.UserDisplays.Include("CurrentJob").Where(d => d.UserName == userName).GroupBy(d => d.CurrentJob.JobNo).Select(g => g.FirstOrDefault()).ToList();
非常感谢任何帮助!
答案 0 :(得分:1)
编辑 - 适用于ComplexProperty
我相信一旦你执行GroupBy
所有Include
方法都会被忽略。因此,您需要迭代列表并在每个项目上调用LoadProperty
方法。它应该看起来像这样
var list = context.UserDisplays
.Where(d => d.UserName == userName)
.GroupBy(d => d.CurrentJob.JobNo)
.Select(g => g.FirstOrDefault()).ToList();
foreach(var item in list)
{
context.LoadProperty(item, "CurrentJob");
}
return list;
答案 1 :(得分:1)
查看本文中的Distinct(Set Operators)部分 http://msdn.microsoft.com/en-us/vcsharp/aa336746 您是否要求使用Distinct UserDisplays?还是不同的用户或Disticnt工作?
我会尝试说像
var object = (from userDisplay in context.UserDisplays.Include("CurrentJob")
.Where userDisplay.UserName == userName
Select userDisplay).Distinct();
(对不起,我的VB样式但是应该差不多......)