有一个通用的数字列表,比如说
{980, 850,700, 680}---n 个
我尝试将上面的列表与十进制数字进行比较。比如说 690.,我需要的 O/p 是,得到我要输入的数字的排名(“692)。即,所需的 O/P 应该是 Ranking =“4”
我怎样才能获得上述场景的 O/p ..??
有一个通用的数字列表,比如说
{980, 850,700, 680}---n 个
我尝试将上面的列表与十进制数字进行比较。比如说 690.,我需要的 O/p 是,得到我要输入的数字的排名(“692)。即,所需的 O/P 应该是 Ranking =“4”
我怎样才能获得上述场景的 O/p ..??
您的问题不清楚,我不确定在扮演什么角色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
如果您的列表已经排序,这可能是多余的,但我假设您的示例数据只是意外排序。
继亚历克斯的帖子之后,我认为您正在寻找
var numbers = new List<int>() { 980, 850, 700, 680 };
var dec = new Decimal(692.0);
var temp = numbers.Count(x => x > dec) + 1;
这将返回您正在寻找的职位
如果要在列表中查找十进制输入与 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 开始的位置。