给定一个对象列表,我如何找到任何特定对象的索引?

问题描述:

好吧,这可能是一个更好的方法,如果这是请让我知道!给定一个对象列表,我如何找到任何特定对象的索引?

我有一个列表Users(我的系统中的实体框架实体)。每个User对象都有一定的属性。我需要对所有基于这些属性的用户进行排名(谁赚取最多的销售额等等)

目前我正在考虑最好的方法是使用LINQ的OrderBy扩展方法对列表重新排序我正在将它列入新列表中。一旦完成,我应该能够在这个新排序的列表中获得用户的位置,这将表明他们的排名。 (我知道当用户对所述属性具有相同的值时它将变得更复杂)

问题是,怎么样?

谢谢!

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 }); 
+0

每当我看到像这样的LINQ示例,我想编写代码。上帝,我是一个极客。 – 2010-10-12 16:07:04

+0

@Mike Hofer:每当我读到这样的问题时,都会发生这种情况:-) – 2010-10-12 16:34:02