【问题标题】:C# Array Merge Without Dupes没有重复的 C# 数组合并
【发布时间】:2010-02-25 04:45:36
【问题描述】:

假设我有这两个数组:

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

如何合并它们以获得第三个数组,如下所示:string[3]{"Hello", "Stack", "Overflow"}

【问题讨论】:

    标签: c#


    【解决方案1】:
    string[] arr1 = new string[2]{"Hello", "Stack"};
    string[] arr2 = new string[2] { "Stack", "Overflow" };
    
    var arr3 = arr1.Union(arr2).ToArray<string>();
    

    【讨论】:

    • 请注意,这需要 .NET 3.5 和 LINQ。
    • @jrista - 严格来说,不太正确。它可以是任何以 .NET 2.0 为目标的 C# 3.0 编译器(例如)LINQBridge。没有 .NET 3.5 要求。如果你推出自己的扩展方法,它可以去任何地方,所以不会提到“LINQ”,即使在using 指令中也是如此。
    • @Mark:当然,严格来说。但是,对于普通的 .NET 程序员来说,我认为我的说法是正确的并且完全可以接受。 (我认为更多人会在选择诸如 LINQBridge 之类的第三方框架或推出自己的内部框架之前升级到 .NET 3.5……)
    【解决方案2】:
    string[] arr3 = arr1.Union(arr2).ToArray();
    

    (如果您有 LINQ 和 using System.Linq; 指令)

    【讨论】:

      【解决方案3】:
      ar2.Union<string>(ar1, StringComparer.CurrentCultureIgnoreCase).ToArray<string>();
      

      【讨论】:

        【解决方案4】:

        这样做的旧方法

                    List<string> temp = arr1.ToList<string>();
                    foreach (string s in arr1)
                    {
                        if (!arr2.Contains(s))
                        {
                            temp.Add(s);
                        }
                    }
                    String[] arr3 = temp.ToArray<string>();  
        

        新的更好的方法,使用 .Net Framework 3.5 + LINQ

          string[] arr3 = arr1.Union(arr2).ToArray();
        

        【讨论】:

        • 对于“旧方式”ToList 不可用。请改用List&lt;string&gt; temp = new List&lt;string&gt;(arr1);
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-13
        • 2019-04-18
        • 2010-11-08
        • 1970-01-01
        • 2011-03-16
        相关资源
        最近更新 更多