[英]Linq Take changing the query result
現在我正在使用
db.Products.Skip(0).Take(10).ToList();
但它改變了我的集合的結果。
例如:
//product.Name = Ball
var product = db.Products.ToList()[5];
//product.Name = Ball
var product = db.Products.Skip(0).ToList()[5];
//product.Name = Sleigh (it skips the "Ball" product)
var product = db.Products.Take(10).ToList()[5];
為什么會發生這種情況?
我正在使用
Skip(0)
因為我在申請的第一頁。
根據我的數據集,它應該返回“Ball”作為我集合的 5° 乘積。
如果我嘗試
db.Products.ToList().Take(10).ToList();
它工作得很好。
編輯:我很抱歉我的問題不完整,我認為沒有必要說,但我正在使用以下命令訂購我的清單:
produtosQuery = produtosQuery
.OrderByDescending(pro => pro.Likes.Where(like =>
like.UsuarioId == usuarioId &&
like.IsAtivo == true).Count())
.ThenByDescending(pro => pro.Compras.Count)
.ThenByDescending(pro => pro.Likes.Count(like => like.IsAtivo));
請注意,Product 不是有序列表,並且不能保證項目始終處於相同的順序。
為了確保這一點,您需要先訂購。
db.Products.OrderBy(item => item.someProperty).Take(10).ToList();
此外,您首先.ToList()
是額外的。
db.Products.ToList().Take(10).ToList();
^^^^^^^^^ //don't need this one here
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.