Ema*_*shi 1 c# linq entity-framework
现在我正在使用
db.Products.Skip(0).Take(10).ToList();
Run Code Online (Sandbox Code Playgroud)
但它改变了我的集合的结果。
例如:
//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];
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?
我正在使用
Skip(0)
Run Code Online (Sandbox Code Playgroud)
因为我在申请的第一页。
根据我的数据集,它应该返回“Ball”作为我集合的 5° 乘积。
如果我尝试
db.Products.ToList().Take(10).ToList();
Run Code Online (Sandbox Code Playgroud)
它工作得很好。
编辑:我很抱歉我的问题不完整,我认为没有必要说,但我正在使用以下命令订购我的清单:
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));
Run Code Online (Sandbox Code Playgroud)
请注意,Product 不是有序列表,并且不能保证项目始终处于相同的顺序。
为了确保这一点,您需要先订购。
db.Products.OrderBy(item => item.someProperty).Take(10).ToList();
Run Code Online (Sandbox Code Playgroud)
另外你先是.ToList()额外的。
db.Products.ToList().Take(10).ToList();
^^^^^^^^^ //don't need this one here
Run Code Online (Sandbox Code Playgroud)