C# 合并列表<;字符串>;按字母顺序换成另一个

C# 合并列表<;字符串>;按字母顺序换成另一个,c#,list,alphabetical,C#,List,Alphabetical,假设我有一个(没有那么有序的)主列表: List<string> list1 = new List<string> { "AB2", "AB1", "AB3", "BB3", "BB2", "BB1" }; List list1=新列表{“AB2”、“AB1”、“AB3”、“BB3”、“BB2”、“BB1”}; 我想按字母顺序再增加一个列表。例如,如

假设我有一个(没有那么有序的)主列表:

List<string> list1 = new List<string> { "AB2", "AB1", "AB3", "BB3", "BB2", "BB1" };
List list1=新列表{“AB2”、“AB1”、“AB3”、“BB3”、“BB2”、“BB1”};
我想按字母顺序再增加一个列表。例如,如果我有

List<string> list2 = new List<string> { "AA1", "AA2", "BA1", "BA2" };
List list2=新列表{“AA1”、“AA2”、“BA1”、“BA2”};
合并后的名单将是

List<string> listMerged = new List<string> { "AA1", "AA2", "AB2", "AB1", "AB3", "BA1", "BA2", "BB3", "BB2", "BB1" };
List listMerged=新列表{“AA1”、“AA2”、“AB2”、“AB1”、“AB3”、“BA1”、“BA2”、“BB3”、“BB2”、“BB1”};
因此,松散地说,规则是:对于主列表中的每个元素,循环第二个列表并插入前面按字母顺序找到的每个元素


我怎样才能做到这一点?我不想对第一个列表进行排序,我只想将第二个列表按顺序插入其中。

此代码将为您提供所需的输出

对于第二个列表中的每个项目,它将与第一个列表中的项目进行比较,在第一个列表中前后移动。如果比较为正,那么B>A,它将继续迭代。否则,它将停止并插入到与之比较的项目之前的第一个列表中

var list1 = new List<string> { "AB2", "AB1", "AB3", "BB3", "BB2", "BB1" };
var list2 = new List<string> { "AA1", "AA2", "BA1", "BA2" };

foreach (var item in list2)
{
    var index = 0;
    while (index < list1.Count && item.CompareTo(list1[index]) > 0)
    {
        index++;
    }
    list1.Insert(index, item);
}
var list1=新列表{“AB2”、“AB1”、“AB3”、“BB3”、“BB2”、“BB1”};
var list2=新列表{“AA1”、“AA2”、“BA1”、“BA2”};
foreach(列表2中的变量项)
{
var指数=0;
而(索引0)
{
索引++;
}
清单1.插入(索引,项目);
}

如果第一个列表未排序,并且您希望它保持未排序状态,那么认为您可以将另一个已排序列表合并到其中是毫无意义的。或者至少,第二个列表的“排序”方面是完全不相关的。请修复您的问题,使其包含一个,以及该代码的详细说明,它与您想要的有什么不同,以及您具体需要哪些帮助。如前所述,你的问题毫无意义。@Dmitry:来自帖子:“我不想对第一个列表进行排序”。这些评论无论如何都不是为了回答问题,但你在评论中提出的答案显然违反了规定的要求。对两个列表的串联进行排序实际上与对第一个列表进行排序相同。