2011-10-10 71 views
1

我有List,其中MyClass由3個字段組成,int id,雙重價格和字符串名稱,現在我想通過desc分數來命令它並回顧給定的對象及其位置,我怎麼能這樣做?從單個查詢的列表中返回索引和對象?

是來到我的腦海裏的第一件事是:

var find = score.OrderByDescending(x => x.Price).FirstOrDefault(x => x.ID == id); 

這確實讓我這個項目,但我仍然需要它的位置。

有沒有一種方法可以返回找到的對象和它在列表中的位置?

我可以做一個foreach每個結果,但我不知道是否有更好的方式與LINQ或類似。

回答

2

項目以匿名類和使用Select()重載讓你指數:

var find = score.OrderByDescending(x => x.Score) 
       .Select((x,i) => new { Item = x, Position = i }) 
       .FirstOrDefault(x => x.Item.ID == id); 
+0

酷這樣的作品,高興地看到,實施,是它的成本大還是不明顯? – Prix

+0

@Prix:應該沒有明顯的性能差異,雖然你確實增加了一些額外的開銷當然 – BrokenGlass

+0

我期待一些小的開銷,只是想知道,因爲它看起來很直截了當;)不知道我實際上可以做些什麼直到現在。 – Prix