C#实体框架排序和分页产生意外结果
当我将实体框架与C#实体框架排序和分页产生意外结果,c#,.net,entity-framework,C#,.net,Entity Framework,当我将实体框架与OrderBy和Skip和Take一起使用时,存在重复记录,并且一些记录不显示 代码如下: jobs = context.Jobs.Include("Company"). OrderBy(x => x.Company.Name). Skip((page - 1) * PageSize). Take(PageSize).ToList(); 但是,如果我按一些作业属性(如x=>x.
OrderBy
和Skip
和Take
一起使用时,存在重复记录,并且一些记录不显示
代码如下:
jobs = context.Jobs.Include("Company").
OrderBy(x => x.Company.Name).
Skip((page - 1) * PageSize).
Take(PageSize).ToList();
但是,如果我按一些作业
属性(如x=>x.Title
)排序,则不会出现任何问题。问题仅在与作业的某些相关实体排序时出现。在我的代码工作中
和公司
有一对多的关系
请帮忙
谢谢您的查询没有完全定义结果行的顺序 假设我们有一张桌子:
Id Name
1 Bar
2 Foo
3 Bar
按名称
排序时,可能会出现以下结果集:
Id Name
1 Bar
3 Bar
2 Foo
及
每次调用都可能返回任何一个集合,因此,如果页面大小1
可能会得到如下奇怪结果:
Id Name
1 Bar // 1st set
1 Bar // 2nd set
2 Foo // 1st set
在密钥中添加一些独特的属性(大多数情况下为PK)将修复此行为
给定键名称,Id
只有一个可能的结果:
Id Name
1 Bar
3 Bar
2 Foo
因此,您的查询应该如下所示(假设JobId
是PK):
您的查询没有完全定义结果行的顺序 假设我们有一张桌子:
Id Name
1 Bar
2 Foo
3 Bar
按名称
排序时,可能会出现以下结果集:
Id Name
1 Bar
3 Bar
2 Foo
及
每次调用都可能返回任何一个集合,因此,如果页面大小1
可能会得到如下奇怪结果:
Id Name
1 Bar // 1st set
1 Bar // 2nd set
2 Foo // 1st set
在密钥中添加一些独特的属性(大多数情况下为PK)将修复此行为
给定键名称,Id
只有一个可能的结果:
Id Name
1 Bar
3 Bar
2 Foo
因此,您的查询应该如下所示(假设JobId
是PK):
谢谢它解决了这个问题。但为什么按职位排序结果是正确的,而按职位相关实体(如公司)排序结果是错误的。姓名?谢谢。它解决了这个问题。但为什么按职位排序的结果是正确的,而按职位相关实体(如公司名称)排序的结果是错误的?