0

有一个通用的数字列表,比如说

{980, 850,700, 680}---n 个

我尝试将上面的列表与十进制数字进行比较。比如说 690.,我需要的 O/p 是,得到我要输入的数字的排名(“692)。即,所需的 O/P 应该是 Ranking =“4”

我怎样才能获得上述场景的 O/p ..??

4

3 回答 3

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如果您的列表已经排序,这可能是多余的,但我假设您的示例数据只是意外排序。

于 2012-04-26T07:59:19.020 回答
0

继亚历克斯的帖子之后,我认为您正在寻找

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

这将返回您正在寻找的职位

于 2012-04-26T07:40:26.950 回答
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 开始的位置。

于 2012-04-26T07:29:48.400 回答