c#iquiryable<;T>;。Take方法不限制EF6实体上的结果

c#iquiryable<;T>;。Take方法不限制EF6实体上的结果,c#,entity-framework,linq,C#,Entity Framework,Linq,我使用linq和EntityFramework 6来限制从数据库返回的记录数 我的测试表,AuditLogs,总共有20条记录 如果我写: var auditLogsList=context.AuditLogs.Take(10);//类型是易读的 var listValues=auditLogsList.ToList(); var count=listValues.count;//正确输出=10 我得到列表值。Count等于10,这是预期的输出 但是,我不知道为什么,如果我在下一行调用meth

我使用linq和EntityFramework 6来限制从数据库返回的记录数

我的测试表,
AuditLogs
,总共有20条记录

如果我写:

var auditLogsList=context.AuditLogs.Take(10);//类型是易读的
var listValues=auditLogsList.ToList();
var count=listValues.count;//正确输出=10
我得到
列表值。Count
等于10,这是预期的输出

但是,我不知道为什么,如果我在下一行调用method Take

var auditLogsList=context.AuditLogs;//类型是易读的
审计日志列表(10);
var listValues=auditLogsList.ToList();
var count=listValues.count;//错误输出=20
我得到
listValues.Count
等于20,这是表中记录的总数,而不是我所期望的

我需要用第二种方法

如果这是一个bug或者我遗漏了什么,有什么想法吗?

注意:我正在使用.NET Framework 4.6.1和Entity Framework 6这一行:

auditLogsList.Take(10);
只需在10个项目上创建一个枚举数,但您不会在任何地方分配它,因此它会被丢弃

稍后您将执行以下操作:

var listValues = auditLogsList.ToList();
这是一个完整的列表-因此,你得到20

如果您只想获取10个项目(作为列表),可以将上面的行更改为:

var listValues = auditLogsList.Take(10).ToList();
这一行:

auditLogsList.Take(10);
只需在10个项目上创建一个枚举数,但您不会在任何地方分配它,因此它会被丢弃

稍后您将执行以下操作:

var listValues = auditLogsList.ToList();
这是一个完整的列表-因此,你得到20

如果您只想获取10个项目(作为列表),可以将上面的行更改为:

var listValues = auditLogsList.Take(10).ToList();

实际上,您使用的
Take
是错误的。正如msdnlink所说,它将从序列的开始返回指定数量的连续元素。所以你需要把它设置成一个变量

var auditLogsList = context.AuditLogs; 
auditLogsList = auditLogsList.Take(10);
var listValues = auditLogsList.ToList();
var count = listValues.Count; // output = 10

希望有帮助,

实际上你用的
Take
是错误的。正如msdnlink所说,它将从序列的开始返回指定数量的连续元素。所以你需要把它设置成一个变量

var auditLogsList = context.AuditLogs; 
auditLogsList = auditLogsList.Take(10);
var listValues = auditLogsList.ToList();
var count = listValues.Count; // output = 10

希望能帮助我,我的错误。就这样!你先回答了,所以我应该接受。为了向其他人澄清答案,请您编辑您的答案,以显示@Berkay所做的正确方法的示例?我的错误。就这样!你先回答了,所以我应该接受。为了向其他人澄清答案,您能否像@Berkay那样编辑您的答案,以显示正确方法的示例?您的链接指向错误的答案,您愿意。@ScottChamberlain感谢Scott。更新。你的链接指向错误的拍摄,你想要。@ScottChamberlain谢谢Scott。更新。