2012-04-26 53 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可能是多余的,但我认为你的样品数据只是意外排序。