【发布时间】:2017-04-20 09:09:30
【问题描述】:
我想在有序列表中选择用户的位置。
我只能通过将所有项目加载到内存中然后使用IndexAt() 方法来查找位置来使其工作。但是,当数据库中有很多行时,这并不能很好地工作。
public static async Task<int> GetUsersRank(DbEntities db, string userId)
{
var items = await db.UserIqAnswers.Where(x => x.IqQuestion.CorrectAnswer == x.Answer).GroupBy(x => x.UserId).Select(x => new { userId = x.Key, points = x.Sum(y => y.IqQuestion.Points) })
.OrderBy(x => x.points)
.ToListAsync();
return items.FindIndex(x => x.userId == userId) + 1;
}
我怎样才能更有效地做到这一点?
【问题讨论】:
标签: c# sql-server entity-framework-6 linq-to-entities