C# Programming

C#高效合并列表的方法

Spread the love

在C#编程中,组合列表是一个基本操作。本文探讨了几种有效的列表连接技术,每种技术都有其自身的优势和用例。我们将研究不同的方法,从简单的串联到更复杂的运算,例如合并并去除重复项或配对元素。

目录

  1. 使用AddRange()连接列表
  2. 使用Concat()(LINQ)连接列表
  3. 使用foreach循环手动连接列表
  4. 使用Union()(LINQ)组合列表并删除重复项
  5. 使用InsertRange()将列表插入另一个列表
  6. 使用Zip()方法配对元素
  7. 结论

使用AddRange()连接列表

AddRange()方法提供了一种直接有效的方法,可以将一个列表追加到另一个列表的末尾。此方法会修改原始列表。


using System;
using System.Collections.Generic;

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<int> list1 = new List<int> { 1, 2, 3 };
        List<int> list2 = new List<int> { 4, 5, 6 };

        list1.AddRange(list2);

        Console.WriteLine("合并后的列表:");
        Console.WriteLine(string.Join(" ", list1)); // 输出:1 2 3 4 5 6
    }
}

使用Concat()(LINQ)连接列表

LINQ的Concat()方法提供了一种只读的列表连接方法。它创建一个新列表,其中包含两个输入列表中的所有元素,而不会更改原始列表。


using System;
using System.Collections.Generic;
using System.Linq;

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<int> list1 = new List<int> { 1, 2, 3 };
        List<int> list2 = new List<int> { 4, 5, 6 };

        var joinedList = list1.Concat(list2).ToList();

        Console.WriteLine("合并后的列表:");
        Console.WriteLine(string.Join(" ", joinedList)); // 输出:1 2 3 4 5 6
    }
}

使用foreach循环手动连接列表

使用foreach循环的手动方法提供了最大的控制权,尤其是在处理更复杂的连接逻辑时。


using System;
using System.Collections.Generic;

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<int> list1 = new List<int> { 1, 2, 3 };
        List<int> list2 = new List<int> { 4, 5, 6 };
        List<int> joinedList = new List<int>();

        joinedList.AddRange(list1);
        foreach (int num in list2)
        {
            joinedList.Add(num);
        }

        Console.WriteLine("合并后的列表:");
        Console.WriteLine(string.Join(" ", joinedList)); // 输出:1 2 3 4 5 6

    }
}

使用Union()(LINQ)组合列表并删除重复项

Union()方法有效地合并两个列表,同时消除重复项。


using System;
using System.Collections.Generic;
using System.Linq;

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<int> list1 = new List<int> { 1, 2, 3 };
        List<int> list2 = new List<int> { 3, 4, 5 };

        var joinedList = list1.Union(list2).ToList();

        Console.WriteLine("合并后的列表(已删除重复项):");
        Console.WriteLine(string.Join(" ", joinedList)); // 输出:1 2 3 4 5
    }
}

使用InsertRange()将列表插入另一个列表

InsertRange()允许在指定索引处将一个列表精确地插入另一个列表。


using System;
using System.Collections.Generic;

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<int> list1 = new List<int> { 1, 2, 3 };
        List<int> list2 = new List<int> { 4, 5, 6 };

        list1.InsertRange(2, list2); // 从索引2开始插入list2

        Console.WriteLine("合并后的列表:");
        Console.WriteLine(string.Join(" ", list1)); // 输出:1 2 4 5 6 3
    }
}

使用Zip()方法配对元素

Zip()方法根据索引配对来自两个列表的对应元素。当您需要组合具有关系对应关系的元素时,这非常有用。


using System;
using System.Collections.Generic;
using System.Linq;

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<string> list1 = new List<string> { "A", "B", "C" };
        List<int> list2 = new List<int> { 1, 2, 3 };

        var zippedList = list1.Zip(list2, (str, num) => str + num).ToList();

        Console.WriteLine("配对后的列表:");
        Console.WriteLine(string.Join(" ", zippedList)); // 输出:A1 B2 C3
    }
}

结论

C#提供了丰富的列表操作工具。方法的选择很大程度上取决于任务的具体要求。在选择最合适的方法时,请考虑您是否需要修改原始列表、删除重复项或配对对应元素。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注