Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#输入差软数_C#_Console Application - Fatal编程技术网

C#输入差软数

C#输入差软数,c#,console-application,C#,Console Application,我有以下代码。请帮我得到我想要的输出。我有一个数字列表,然后输入值是4。我希望我的列表将根据0的差异排序,然后其余的将升序。例如,在我的列表中有4个。我的输入是4,所以我想对数字项-输入值=0(4-4=0)的数字进行排序 C# 所需输出 4 4 4 4 1 1 2 3 5 6 7 8 您需要使用OrderByDescending,而不是numbers.OrderBy(x=>x-4==0),因为true比false“更多”,您需要先使用它们。您还希望按其值对其余的进行排序: var sorted

我有以下代码。请帮我得到我想要的输出。我有一个数字列表,然后输入值是4。我希望我的列表将根据0的差异排序,然后其余的将升序。例如,在我的列表中有4个。我的输入是4,所以我想对数字项-输入值=0(4-4=0)的数字进行排序

C#

所需输出

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
OrderBy降序
使用:

var sortedNumbers = numbers.OrderBy(x => x == 4 ? 0 : 1).ThenBy(x => x);

您需要使用
OrderByDescending
,而不是
numbers.OrderBy(x=>x-4==0)
,因为true比false“更多”,您需要先使用它们。您还希望按其值对其余的进行排序:

var sortedNumbers = numbers.OrderByDescending(x => x == 4).ThenBy(x => x);
如果您不记得是否需要使用
OrderBy
OrderBy降序
使用:

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();
    }       
编辑:如果列表中的数字为零或负数,则您的数字顺序如下:首先,精确匹配,然后升序。例如:
{-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

您可以通过在
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();
    }       
编辑:如果列表中的数字为零或负数,则您的数字顺序如下:首先,精确匹配,然后升序。例如:
{-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


我希望我的列表将首先根据0的差异进行排序,然后其余的将升序。
您能详细说明一下吗?这是什么意思?@Amy举例来说,在数字列表中有4个。我的输入是4,因此我希望首先以零差获得所有项目,例如4(来自列表项)-4(输入)=0
我希望我的列表将首先根据0差进行排序,然后其余项目将升序。
您能详细说明吗?这是什么意思?@Amy举例来说,在数字列表中有4个。我的输入是4,所以我想先通过零差得到所有项,例如4(来自列表项)-4(输入)=0这将首先放入负数,然后放入“0和4”值,然后是所有其他值。它对示例输入有效,但我在问题中看不到任何东西可以保证列表不包含零或负数。好的@JonSkeet,我纠正了这个问题。如果输入包含
int.MinValue
,这仍然会出错。与其使用魔法值,不如使用实际谓词(无论它是否相等),而不是映射到另一个值。@JonSkeet我认为列表中不太可能有
int.MinValue
,但你是对的。谓词的问题是它只返回
true
false
,因此解决方案是对列表进行预排序,或者使用第二个谓词
,然后再使用
(如Tim Schmelter.did),在我看来,使用第二个排序是一个更好的解决方案,因为它更直接地映射到原始的问题陈述:“我希望我的列表将首先根据0的差异进行排序,然后其余的将升序。”当问题描述为两阶段排序时,解决方案也应该是自然的。这将首先放置负数,然后是“0和4”“价值观,然后是一切。它对示例输入有效,但我在问题中看不到任何东西可以保证列表不包含零或负数。好的@JonSkeet,我纠正了这个问题。如果输入包含
int.MinValue
,这仍然会出错。与其使用魔法值,不如使用实际谓词(无论它是否相等),而不是映射到另一个值。@JonSkeet我认为列表中不太可能有
int.MinValue
,但你是对的。谓词的问题是它只返回
true
false
,因此解决方案是对列表进行预排序,或者使用第二个谓词
,然后再使用
(如Tim Schmelter.did),在我看来,使用第二个排序是一个更好的解决方案,因为它更直接地映射到原始的问题陈述:“我希望我的列表将首先根据0的差异进行排序,然后其余的将按升序排序。”当问题描述为两阶段排序时,解决方案也应该是自然的。我还建议使用
x==4
作为检查值是否为4比
x-4==0
更简单的方法。(而不是使用
OrderByDescending
,你可以使用
OrderByDescending(x=>x!=4)
,虽然我不确定这是否更清楚…@JonSkeet:是的,当你使用
数字时更正了它。OrderBy(x=>x==4?0:1)
,除了4以外的数字没有升序(它们在列表中保留初始顺序)。因此您的第一个选项更好。@XouDo:当然,第二个方法只是告诉OP如何使用更简单的
OrderBy(int)来防止
OrderBy(bool)
。然后他不需要记住是使用
OrderBy
还是使用
OrderByDescending
bool
。当然,他需要先添加
,然后再添加(x=>x)
也一样。我会编辑它,我认为它很清楚。编辑:Done我还建议使用
x==4
作为检查值是否比
x-4==0
更简单的方法(并且可以使用
OrderByDescending
,而不是使用
OrderByDescending(x=>x!=4)
,尽管我不确定这是否更清楚…)@JonSkeet:没错,当你使用
num时,你就纠正了它