我有一个非常奇怪的问题,那就是我的LINQ查询执行得太慢。代码如下:甚至对于小集合,LINQ查询执行得非常缓慢
var user = ctx.Users.FirstOrDefault(x => x.Username== username);
ViewBag.Items = user.Items.GroupBy(x => x.ItemId).Select(pr => new SalesViewModel
{
ImageURL = pr.Select(x=>x.ImageURL).FirstOrDefault(),
Title= pr.Select(x=>x.Title).FirstOrDefault(),
Sales = pr.Select(x=>x.Transactions.Sum(y=>y.QuantitySold)).FirstOrDefault()
})
.OrderByDescending(x=>x.Sales)
.ToList();
所以用户对象包含一个ICollection集合包含1300个项目的项目。并且每个这些项目包含另一个ICollection被称为“交易”收集...
我注意到,这些每个都有最多20-25个交易,所以项目内的集合不是那么大...
我在这里做错了什么,为什么LINQ需要30-40秒来处理这段代码?
有没有什么办法让它更好?
由该集团是没有必要的,如果'ItemId'是Items'表 – octavioccl
的'的PK @octavioccl这不是遗憾的是:(...这是一个单独的属性 – User987
I'n从'ctx'猜测这是实体的linq?如果是这样,使用一个分析器来查看正在生成什么SQL语句 – stuartd