You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#数组对称合并:如何合并两数组并去除共同元素得到目标数组

合并两个C#数组并提取非共同元素

现有两个C#字符串数组:

string[] arr1 = new string[2]{"Hello", "Stack"};
string[] arr2 = new string[2]{"Stack", "Overflow"};

需要合并后得到仅包含两数组中非共同元素的新数组:string[2]{"Hello", "Overflow"},可以用以下几种方法实现:

方法一:使用LINQ(简洁高效)

利用LINQ的集合操作方法,直接计算两个数组的对称差集(即只在其中一个数组中出现的元素):

using System.Linq;

// 计算对称差集
string[] result = arr1.Union(arr2).Except(arr1.Intersect(arr2)).ToArray();
  • Union(arr2):合并两个数组并去重,得到{"Hello", "Stack", "Overflow"}
  • Intersect(arr2):获取两个数组的共同元素,得到{"Stack"}
  • Except(...):从合并后的集合中移除共同元素,最终得到目标数组

方法二:手动遍历+哈希集合(无需LINQ)

如果不想依赖LINQ,可以用哈希集合统计元素出现次数,再筛选出只出现一次的元素:

using System.Collections.Generic;

Dictionary<string, int> countDict = new Dictionary<string, int>();

// 统计arr1中元素的出现次数
foreach (string s in arr1)
{
    if (countDict.ContainsKey(s))
        countDict[s]++;
    else
        countDict[s] = 1;
}

// 统计arr2中元素的出现次数
foreach (string s in arr2)
{
    if (countDict.ContainsKey(s))
        countDict[s]++;
    else
        countDict[s] = 1;
}

// 筛选出只出现一次的元素
List<string> resultList = new List<string>();
foreach (var kvp in countDict)
{
    if (kvp.Value == 1)
        resultList.Add(kvp.Key);
}

string[] result = resultList.ToArray();

这种方法通过统计每个元素在两个数组中的总出现次数,只保留出现次数为1的元素,同样能得到目标结果。

内容的提问来源于stack exchange,提问作者ser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:15:15