Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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# LINQ分组结果并按特定顺序对其排序_C#_Linq - Fatal编程技术网

C# LINQ分组结果并按特定顺序对其排序

C# LINQ分组结果并按特定顺序对其排序,c#,linq,C#,Linq,我想按如下方式排列我的数据: 按称为“类型”的值对我的数据进行分组 我想按类型的特定顺序对组进行排序,例如: 我定义了顺序:类型1,类型3,类型4,类型2 现在,我希望所有设置都像这样: -前几行是TYPE1类型的行 -接下来的几行是TYPE3类型的行 有谁能告诉我如何实现这一点吗?您提到了类型是一个枚举。我可以看到两个简单的选择订购这个,1。更改枚举成员或2的值。使用自定义命令 解决方案1-更改枚举成员值 这非常简单,但可能不符合您的要求(即枚举值可能在其他地方指定或需要硬编码值) 按所

我想按如下方式排列我的数据:

  • 按称为“类型”的值对我的数据进行分组

  • 我想按类型的特定顺序对组进行排序,例如: 我定义了顺序:类型1,类型3,类型4,类型2

    现在,我希望所有设置都像这样:

    -前几行是TYPE1类型的行

    -接下来的几行是TYPE3类型的行


  • 有谁能告诉我如何实现这一点吗?

    您提到了
    类型是一个枚举。我可以看到两个简单的选择订购这个,1。更改枚举成员或2的值。使用自定义命令

    解决方案1-更改枚举成员值

    这非常简单,但可能不符合您的要求(即枚举值可能在其他地方指定或需要硬编码值)

    按所需顺序将枚举成员的值更改为固定值:

    public enumeration YourEnumName {
        TYPE1 = 1,
        TYPE3 = 2,
        TYPE4 = 3,
        TYPE2 = 4
    }
    
    YourEnum[] orderList = new [] { YourEnum.TYPE1, YourEnum.TYPE3, YourEnum.TYPE4, YourEnum.TYPE2 };
    
    var result = yourData.OrderBy(x => orderList.IndexOf(x.Type));
    
    解决方案2-使用自定义列表进行订购

    在进行订购时,请创建一个列表来指定您想要的订单:

    public enumeration YourEnumName {
        TYPE1 = 1,
        TYPE3 = 2,
        TYPE4 = 3,
        TYPE2 = 4
    }
    
    YourEnum[] orderList = new [] { YourEnum.TYPE1, YourEnum.TYPE3, YourEnum.TYPE4, YourEnum.TYPE2 };
    
    var result = yourData.OrderBy(x => orderList.IndexOf(x.Type));
    

    第二种解决方案的局限性在于,如果您有一个在
    订单列表
    中不存在的项目,那么您会发现这些项目按照它们在列表开头收到的顺序放在一起。这个问题有解决方案,但我不清楚您是否会遇到它。

    是枚举还是字符串,还是其他什么?Type是我的枚举,我希望基于枚举值有特定的顺序
    var-typeSequence=new[]{TYPE1,TYPE3,TYPE4,TYPE2};var ordered=items.OrderBy(item=>typeSequence.IndexOf(item.Type))var-typeSequence=newdictionary{{TYPE1,1},{TYPE3,2},[…]}typeSequence[item.Type]
    。请在问题中提供有关数据结构的更多信息。最好的方法是使用一段代码。您还可以包括您所做的研究以及基于该研究所做的任何尝试。