LINQ - 使用OrderBy EnumValue和Union结果集对对象列表进行排序?

3 c# linq linq-to-objects

问候!我想使用LINQ来查询对象列表并按枚举值对它们进行排序,然后将字符串值联合起来,以类似的方式将列表的其余部分排序LINQ newbie here,所以要温和.

//CTOR for my class
MyClass(id, "Name Value Here", Enum.EnumValueHere);
Run Code Online (Sandbox Code Playgroud)

我创建了这些对象的列表,并希望对它们进行可变排序,以便所有具有Enum.EnumValue [X]的项目首先显示在列表中,按名称排序,然后按类似方式排序的所有其他项目(像联盟一样almnost) SQL中的结果集)

//What I have so far (only sorts the list)
List<MyClass> = (from s in MyClass orderby s.EnumValue, s.NameValue  select s).ToList();
Run Code Online (Sandbox Code Playgroud)

任何Guru都有一些LINQ Magic可以分享吗?

谢谢!

Svi*_*ish 10

不确定你的意思,但你可以使用这样的东西吗?

// Using Color as enum just to make things clearer
class ClassyClass
{
    public string Name {get; private set;}
    public Color Color {get; private set;}
    public ClassyClass(id, string name, Color color) { ... }
}


var orderedList = collectionOfClassyClasses
            .OrderBy(x => x.Color != Color.Red) // False comes before true
            .ThenBy(x => x.Color)
            .ThenBy(x => x.Name)
            .ToList();
Run Code Online (Sandbox Code Playgroud)

如果collectionOfClassyClasses是某种ClassyClass对象的集合,那么orderedList将被排序,以便所有那些Color设置为Red的人首先按名称排序,然后按颜色排序所有其他颜色然后命名.至少我认为它会...没有测试过:p让我知道它是否没有,呵呵.