我有一个拥有超过100万条记录的数据库,我想在该数据库中找到一个值,但是我知道这个值是在前1000条记录中找到的。
List<string> onHoldOrderslist =
orderList.Where(m => (m.customerId == item.customerId)
&& (m.Marketplace == Market.US)
&& (m.OrderStatus == "onHold"))
.Select(s => s.OrderId)
.ToList();
在代码中,我不想搜索整个orderList
数据库表,而只搜索顶部的xxx条记录。
我的问题是:
答案 0 :(得分:1)
使用
List<string> onHoldOrderslist = orderList.Where(m => (m.customerId == item.customerId) && (m.Marketplace == Market.US) && (m.OrderStatus == "onHold"))
.OrderBy(x => x.WhateverMakesSense)
.Take(1000)
.Select(s => s.OrderId)
.ToList();
请注意排序很重要,否则您可能会随机获得1000个元素...
答案 1 :(得分:0)
鉴于您说这是“一条记录”,而您只返回了一条,不必担心它在前1000名之内(除非您指定顺序,否则top甚至没有任何意义)。在where子句之后使用Take(1000)
将无济于事,因为无论如何只有一条记录。您只需要一个索引,在这种情况下,索引就是customerId
,Marketplace
和OrderStatus
。