using (var nosql = new DbHelper("Feed"))
{
var watch = Stopwatch.StartNew();
nosql.CollectionName = "rawhi";
var x = nosql.GetRecords<Event>(p => true, 0, 1000000);
//GridView1.DataSource = x;
//GridView1.DataBind();
watch.Stop();
long milliseconds = watch.ElapsedMilliseconds;
Response.Write(milliseconds);
}
x
是IQueryable
类型的变量。
当我运行此代码时,结果为:0
所以我想知道数据是否存储在x
var中?
答案 0 :(得分:4)
查询将被延迟评估,因此在尝试枚举结果之前,查询实际上并未执行或返回结果。在您的代码示例中,您已设置了查询,但实际上并未运行它。如果你重新插入数据绑定代码,那将实际枚举结果,然后执行它。
出于测试目的,您可以按如下方式强制枚举:
x.ToList();
答案 1 :(得分:0)
您只需设置管道即可 - 您现在可以通过x
检索结果,但只有在您执行此操作时才能检索到它们。
您可以逐个检索它们:
foreach(var item in x)
{
//do something
}
有时候热切地检索数据是有利的,在这种情况下,您可以使用ToList()
在内部枚举所有结果并将结果集放在x中 - 然后您可以测量需要多长时间:
var x = nosql.GetRecords<Event>(p => true, 0, 1000000).ToList();