gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:43:05 24 4
gpt4 key购买 nike

您好!我想使用 LINQ 查询对象列表并按枚举值、字符串值对它们进行排序,然后合并以类似方式排序的列表的其余部分 LINQ 新手在这里,所以要温和。

//CTOR for my class
MyClass(id, "Name Value Here", Enum.EnumValueHere);

我创建了这些对象的列表,并希望对它们进行可变排序,以便所有具有 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();

有哪位大师有一些 LINQ 魔法可以分享吗?

谢谢!

最佳答案

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

// 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();

如果 collectionOfClassyClasses 是某种 ClassyClass 对象的集合,那么 orderedList 将被排序,以便所有颜色设置为红色的那些先来,按名字排序,然后所有其他的按颜色排序,然后是名字。至少我认为它会……还没有测试过 :p 如果没有,请告诉我,呵呵。

关于c# - LINQ - 使用 OrderBy EnumValue 和 Union 结果集对对象列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1131584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com