0

我有一种情况,我需要从表中获取前 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 ,第一个是否有效

4

2 回答 2

1

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

第二个版本:拿走我所有的物品,过滤它们,只取 15 个过滤的物品。

不,不一样。

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

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

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

这不是一个错误,它可能不是你想要的!

于 2013-10-24T06:43:11.993 回答
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
于 2013-10-24T06:43:18.117 回答