C#将两个list合并为一个新的list
时间: 2024-09-13 08:15:20 浏览: 79
在C#中,你可以使用`Concat()`、`Union()`、`Concat() + ToList()`或者`Enumerable.Concat()`方法将两个List合成为一个新的List。以下是几种常见的方法:
1. **使用Concat()和ToList():**
```csharp
List<int> list1 = new List<int>{1, 2, 3};
List<int> list2 = new List<int>{4, 5, 6};
List<int> mergedList = list1.Concat(list2).ToList();
```
2. **使用Enumerable.Concat():**
```csharp
List<int> mergedList = Enumerable.Concat(list1, list2).ToList();
```
3. **使用Union():** 如果你想保留每个列表中的唯一元素,可以使用`Union()`。
```csharp
List<int> mergedList = list1.Union(list2).ToList();
```
4. **Linq方法链:**
```csharp
List<int> mergedList = list1.AddRange(list2).ToList(); // 这里假设list1有一个AddRange方法用于添加列表
```
每种方法的选择取决于你的具体需求,如是否需要去重,以及对性能的要求。
相关问题
C#将两个有序List合并
在C#中,如果你有两个已排序的`List<T>`需要合并,可以使用LINQ(Language Integrated Query)库提供的`Concat()`方法或者直接迭代器。这里我会展示两种方法:
**方法一:使用LINQ Concat()**
```csharp
List<T> list1 = ... // 第一个有序列表
List<T> list2 = ... // 第二个有序列表
List<T> mergedList = list1.Concat(list2)
.OrderBy(item => item) // 如果需要保持顺序,添加此行
.ToList();
```
如果`T`实现了`IComparable<T>`接口,这一步就不是必需的,因为`Concat()`会自动按元素的自然顺序进行连接。
**方法二:手动迭代**
```csharp
List<T> mergedList = new List<T>();
foreach (T item in list1)
{
mergedList.Add(item);
}
foreach (T item in list2)
{
if (!mergedList.Contains(item)) // 避免重复
{
mergedList.Add(item);
}
}
```
在这个手动迭代的方法中,我们首先将`list1`的所有元素添加到新列表中,然后检查`list2`的每个元素是否已经在`mergedList`中,以防止重复。
c#两个list合并成一个list
你可以使用`List.AddRange()`方法将一个List中的元素添加到另一个List中,从而将两个List合并成一个List。下面是一个简单的示例代码:
```csharp
List<int> list1 = new List<int>() { 1, 2, 3 };
List<int> list2 = new List<int>() { 4, 5, 6 };
list1.AddRange(list2);
foreach (int num in list1)
{
Console.WriteLine(num);
}
```
输出结果为:
```
1
2
3
4
5
6
```
在这个示例代码中,我们首先创建了两个List:`list1`和`list2`。然后,我们调用`list1.AddRange(list2)`方法将`list2`中的元素添加到`list1`中。最后,我们使用`foreach`循环遍历`list1`中的所有元素,并将它们打印到控制台上。
阅读全文