好的,这可能有更好的方法,如果是这样,请告诉我!
我有一个Users
列表(我系统中的实体框架实体)。每个User
对象都具有某些属性。我需要逐个根据这些属性对谁进行排名(谁做了最多的销售等)
目前我认为最好的方法是使用LINQ的OrderBy扩展方法对我排名的属性重新排序List到新列表中。一旦完成,我应该能够在这个新订购的List中获得用户的位置,这将表明他们的排名。 (我知道当用户对所述属性具有相同的值时,它会变得更复杂)
问题是,如何?
谢谢!
答案 0 :(得分:4)
var users = new List<User> { ... };
var userRanks = users
.OrderBy(user => user.Prop1)
.ThenBy(user => user.Prop2)
.Select((user, index) => new { User = user, Rank = index + 1 });