Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在LINQ to Entities查询中使用GroupBy()时,结果中的导航属性为null?_C#_Dictionary_Group By_Linq To Entities_Ef Code First - Fatal编程技术网

C# 为什么在LINQ to Entities查询中使用GroupBy()时,结果中的导航属性为null?

C# 为什么在LINQ to Entities查询中使用GroupBy()时,结果中的导航属性为null?,c#,dictionary,group-by,linq-to-entities,ef-code-first,C#,Dictionary,Group By,Linq To Entities,Ef Code First,编辑: 我首先用EF代码开发一个应用程序,我有一个返回字典的方法: 公共字典GetLastDocumentStationHistoryListOfDocuments(字符串标准) { 字典结果=新字典(); 使用(IUnitOfWork uow=new MyContext()) { DocumentStationHistoryRepository repository=新DocumentStationHistoryRepository(uow); 结果=repository.All()。 包括(

编辑:

我首先用EF代码开发一个应用程序,我有一个返回
字典的方法

公共字典GetLastDocumentStationHistoryListOfDocuments(字符串标准)
{
字典结果=新字典();
使用(IUnitOfWork uow=new MyContext())
{
DocumentStationHistoryRepository repository=新DocumentStationHistoryRepository(uow);
结果=repository.All()。
包括(x=>x.DocumentStation)。
其中(条件,新对象[]{})。
OrderBy(d=>d.DocumentId)。
OrderBy(d=>d.DocumentStationHistoryId)。
GroupBy(g=>(int)g.DocumentId)。
ToDictionary(g=>(int)g.Key,g=>g.LastOrDefault());
返回结果;
}
}
这也是我的实体之间的关系:

但当此方法运行时,结果中包含的属性(
DocumentStation
)为
null
。我的错在哪里

更新:

我测试过,如果删除
.GroupBy()
,它将保留导航属性
那么我该如何解决这个问题呢?

也有这个问题。我在小组成员之前做了一个.ToList()来解决这个问题。因此,这将是:

result = repository.All().
         Include(x => x.DocumentStation).
         Where(criteria,new object[]{}).
         OrderBy(d=>d.DocumentId).
         OrderBy(d=>d.DocumentStationHistoryId).
         ToList().
         GroupBy(g => (int)g.DocumentId).
         ToDictionary(g => (int)g.Key, g => g.LastOrDefault());

你不需要.All()@SamLeach:我需要.All(),因为我想用一个标准筛选所有记录。默认情况下,它会筛选所有记录。它会用我的标准筛选所有DocumentStationHistory记录,我想要这个。我返回的记录正常,但导航属性为空。您是否也可以显示DocumentStationHistory和AppUsers之间关系的配置。但是,由于这个原因,首先从
数据库加载所有数据,然后从
组加载这些数据,这会影响性能。您应该使用
.AsEnumerable
而不是
.ToList
。它流式处理前面的结果,而不是填充一个充满数据的列表。
result = repository.All().
         Include(x => x.DocumentStation).
         Where(criteria,new object[]{}).
         OrderBy(d=>d.DocumentId).
         OrderBy(d=>d.DocumentStationHistoryId).
         ToList().
         GroupBy(g => (int)g.DocumentId).
         ToDictionary(g => (int)g.Key, g => g.LastOrDefault());