按字母顺序将一个列表<string>合并到另一个列表中

Merging a List<string> into another one alphabetically

假设我有一个(排序不是很好的)主列表:

List<string> list1 = new List<string> { "AB2", "AB1", "AB3", "BB3", "BB2", "BB1" };

我想按字母顺序向其中添加另一个列表。例如,如果我有

List<string> list2 = new List<string> { "AA1", "AA2", "BA1", "BA2" };

合并列表为

List<string> listMerged = new List<string> { "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);
}