2012-04-26 67 views
0

有號碼的泛型列表,說排名Linq中

{980,850700,680} ---ñ號。

我嘗試將上面的列表與小數點號進行比較。說690,我需要的O/p是爲了得到我要輸入的數字的排名(「692)。我希望的O/P應該是排名=」4「

我可以得到上述方案中的O/p ??

+0

680,690或692?現在怎麼辦?輸入是否必須與列表的值相匹配? – Alex 2012-04-26 07:32:15

+0

你能解釋一下'690'扮演什麼角色,特別是與'692'相比? – 2012-04-26 07:32:43

回答

0

繼Alex的帖子後,我認爲您正在尋找

var numbers = new List<int>() { 980, 850, 700, 680 }; 
var dec = new Decimal(692.0); 
var temp = numbers.Count(x => x > dec) + 1; 

這將返回你正在尋找

+0

嗨pms1969,感謝一百萬哥們。有用!!!! – Aditya 2012-04-26 08:31:39

+0

沒有probs。請享用。 – pms1969 2012-04-26 08:39:31

0

如果你想尋找一個十進制輸入到列表中的INT,你可以使用FindIndex完全匹配。

var numbers = new List<int>() { 980, 850, 700, 680 }; 
    var dec = new Decimal(680.0); 
    var res = numbers.FindIndex(x => x == dec); 

它返回匹配的基於0的位置。

0

你的問題的立場是不明確的,我不知道是690玩什麼角色。

假設用戶可以輸入一個數字,並且您希望在插入時找到列表中數字的排名(索引)。還假設,因爲你按照它希望新int的位置列表應降序排序值:

var input = 692; 
var numbers = new List<int>() { 980, 850, 700, 680 }; 
var firstLower = numbers.OrderByDescending(i => i) 
    .Select((i, index) => new { Value = i, Index = index }) 
    .FirstOrDefault(x => x.Value < input); 
var rank = firstLower == null ? numbers.Count + 1 : firstLower.Index + 1; 

請注意,如果您的列表已經排序的OrderByDescending可能是多餘的,但我認爲你的樣品數據只是意外排序。