如何从与相关实体的Entity返回不同的行

时间:2011-07-08 17:56:57

标签: linq entity-framework

我有一个与其他实体(相关实体)有关联的实体。我正在尝试从主要实体返回不同的行,这些行需要包含来自相关实体的数据,因此我可以使用相关实体的下游属性。

以下是我正在使用的语句,但它没有返回任何行。最好的方法是什么?

以下是我的代码。

return context.UserDisplays.Include("CurrentJob").Where(d => d.UserName == userName).GroupBy(d => d.CurrentJob.JobNo).Select(g => g.FirstOrDefault()).ToList();

非常感谢任何帮助!

2 个答案:

答案 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;

Resource Link

答案 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样式但是应该差不多......)