这两个搜索语句实体框架之间是否有区别

本文关键字:框架 实体 之间 是否 有区别 语句 搜索 两个 | 更新日期: 2023-09-27 18:36:36

我有一个位置,我需要从表中获取前 15 行,其中iFlag列标记为 0。

所以我有这两个说法:

var t = dbContext.UnProcessedLogs.Take(15).Where(up => up.iFlag == 0).ToList();

var unProcessedlogs = dbContext.UnProcessedLogs.Where(up => up.iFlag == 0).Take(15).ToList(); 

这两种说法有什么区别?

如果前 15 行iFlag标记为 1,第一个行是否有效

这两个搜索语句实体框架之间是否有区别

第一个将:

  1. 取前 15 行UnProcessedLogs
  2. 然后过滤到那些有iFlag == 0的那些(显然可以小于15)

第二个将:

  1. 筛选所有UnProcessedLogs行,筛选出具有iFlag == 0
  2. 以其中的前 15 个为例

如果表有 30 行,其中每隔一行有 iFlag == 0,中间的行有 iFlag == 1 ,则:

  1. 第一个查询将返回 7-8 行(表中的前 15 行,选择带有 iFlag == 0 的行)
  2. 第二个查询将返回所有 15 个iFlag == 0

第一个版本:给我 15 个项目,过滤它们。

第二版:把所有项目都拿走,过滤它们,只拿15个过滤的项目。

不,不一样。

是的,他们会"工作",但不会做同样的事情。

如果前 15 行将 iFlag 标记为 1,第一个会起作用

这将只返回一个空的结果集。

这不是错误,只是可能不是您想要的!