这个问题类似于LINQ 将一种类型的项目分组 https://stackoverflow.com/questions/2835192/linq-group-one-type-of-item但以更通用的方式处理。
我有一个包含各种派生类的列表。我可能有这样的事情:
List<BaseClass> list = new List<BaseClass>() {
new Class1(1),
new Class2(1),
new Class1(2),
new Class3(1),
new Class2(2),
new Class4(1),
new Class3(2)
};
我正在尝试使用 LINQ 对列表进行半排序,以便保持自然顺序,但某些具有 base.GroupThisType == true 的类除外。所有具有 GroupThisType 的类都应该在相同类型的第一个类出现的位置分组在一起。输出应该是这样的:
List<BaseClass> list = new List<BaseClass>() {
new Class1(1),
new Class1(2),
new Class2(1),
new Class3(1),
new Class3(2)
new Class2(2),
new Class4(1),
};
Edit:糟糕,忘了说这个结果是假设 (Class1 和 Class3).GroupThisType == true