C# 软编号与输入的差异
C# Soft Number By Difference From Input
我有以下代码。请帮我得到我想要的输出。我有一个数字列表,然后输入值为 4。我希望我的列表首先根据 0 差异进行排序,然后其余的将按升序排序。例如在我的列表中有 4s。我的输入是 4,所以我想对数字项目 - 输入值=0 (4-4=0).
中的数字进行排序
C#
static void Main(string[] args)
{
var numbers = new List<int> { 1, 2, 3, 4, 4, 5, 6, 7, 4, 8, 1, 4 };
var sortedNumbers = numbers.OrderBy(x => x - 4 == 0);
foreach (var item in sortedNumbers)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
输出
1
2
3
5
6
7
8
1
4
4
4
4
期望输出
4
4
4
4
1
1
2
3
5
6
7
8
您需要使用 OrderByDescending
而不是 numbers.OrderBy(x => x - 4 == 0)
,因为 true 比 false “更多”,您首先需要它们。您还想按它们的值对其余部分进行排序:
var sortedNumbers = numbers.OrderByDescending(x => x == 4).ThenBy(x => x);
如果您不记得是否需要使用 OrderBy
或 OrderByDescending
,请使用:
var sortedNumbers = numbers.OrderBy(x => x == 4 ? 0 : 1).ThenBy(x => x);
您可以通过在 OrderBy
lambda 中使用三元表达式来获得所需的输出:
static void Main(string[] args)
{
var numbers = new List<int> { 1, 2, 3, 4, 4, 5, 6, 7, 4, 8, 1, 4 };
var sortedNumbers = numbers.OrderBy(x => x==4? int.MinValue: x);
foreach (var item in sortedNumbers)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
输出:
4
4
4
4
1
1
2
3
5
6
7
8
编辑:如果您的列表中有零或负数,您的号码将按以下顺序排列:首先是完全匹配,然后是升序。例如:{ -1, 0, 0, -12, 1, 2, 3, 4, 4, 5, 6, 7, 4, 8, 1, 4 }
结果如下:
4
4
4
4
-12
-1
0
0
1
1
2
3
5
6
7
8
我有以下代码。请帮我得到我想要的输出。我有一个数字列表,然后输入值为 4。我希望我的列表首先根据 0 差异进行排序,然后其余的将按升序排序。例如在我的列表中有 4s。我的输入是 4,所以我想对数字项目 - 输入值=0 (4-4=0).
中的数字进行排序C#
static void Main(string[] args)
{
var numbers = new List<int> { 1, 2, 3, 4, 4, 5, 6, 7, 4, 8, 1, 4 };
var sortedNumbers = numbers.OrderBy(x => x - 4 == 0);
foreach (var item in sortedNumbers)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
输出
1
2
3
5
6
7
8
1
4
4
4
4
期望输出
4
4
4
4
1
1
2
3
5
6
7
8
您需要使用 OrderByDescending
而不是 numbers.OrderBy(x => x - 4 == 0)
,因为 true 比 false “更多”,您首先需要它们。您还想按它们的值对其余部分进行排序:
var sortedNumbers = numbers.OrderByDescending(x => x == 4).ThenBy(x => x);
如果您不记得是否需要使用 OrderBy
或 OrderByDescending
,请使用:
var sortedNumbers = numbers.OrderBy(x => x == 4 ? 0 : 1).ThenBy(x => x);
您可以通过在 OrderBy
lambda 中使用三元表达式来获得所需的输出:
static void Main(string[] args)
{
var numbers = new List<int> { 1, 2, 3, 4, 4, 5, 6, 7, 4, 8, 1, 4 };
var sortedNumbers = numbers.OrderBy(x => x==4? int.MinValue: x);
foreach (var item in sortedNumbers)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
输出:
4
4
4
4
1
1
2
3
5
6
7
8
编辑:如果您的列表中有零或负数,您的号码将按以下顺序排列:首先是完全匹配,然后是升序。例如:{ -1, 0, 0, -12, 1, 2, 3, 4, 4, 5, 6, 7, 4, 8, 1, 4 }
结果如下:
4
4
4
4
-12
-1
0
0
1
1
2
3
5
6
7
8