gpt4 book ai didi

c# - LINQ 组一种类型的项目

转载 作者:行者123 更新时间:2023-11-30 12:18:04 25 4
gpt4 key购买 nike

我有一个包含各种派生类的列表。我可能有这样的事情:

List<BaseClass> list = new List<BaseClass>() {
new Class1(),
new Class2(1),
new Class3(),
new Class2(2),
new Class4()
};

我正在尝试使用 LINQ 对列表进行半排序,以便除 Class2 之外保持自然顺序。所有 Class2 实例都应该在第一个 Class2 出现的地方组合在一起。输出应该是这样的:

List<BaseClass> list = new List<BaseClass>() {
new Class1(),
new Class2(1),
new Class2(2),
new Class3(),
new Class4()
};

我这辈子都想不出怎么做...

最佳答案

你可以这样做:

list = list
.TakeWhile(o => !(o is Class2))
.Concat(list.Where(o => o is Class2))
.Concat(
list.SkipWhile(o => !(o is Class2)).Where(o => !(o is Class2))
)
.ToList();

这将获取所有项目,直到第一个 Class2 项目,然后是所有 Class2 项目,然后是所有剩余的非 Class2 项。

关于c# - LINQ 组一种类型的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2835192/

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