【问题标题】:To remove common string from two string array in .net从 .net 中的两个字符串数组中删除公共字符串
【发布时间】:2013-12-28 13:45:14
【问题描述】:

我有两个字符串数组(str 和 str1):

   string[] str = new string[] { "Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat" };
   string[] str1 = new string[] { "Mon", "Tues", "Wed" };
   string[] str2 = new string[10];

我想创建一个新数组,其中包含仅出现在其中一个数组中的项目。 输出将是:

str2[]={"Sun","Thur","Fri","Sat"}

【问题讨论】:

    标签: c# asp.net arrays string


    【解决方案1】:

    您可以使用Enumerable.Except,它通过使用默认的相等比较器来比较值来产生两个序列的集合差。

     var str2= str.Except(str1);
    

    注意:不要忘记添加 System.Linq 命名空间之类的;

    using System.Linq;
    

    【讨论】:

    • @user3140153,您是否包含System.Linq。请参阅 Soner Gönül 提供的工作演示
    【解决方案2】:

    您可以在 LINQ 中使用Enumerable.Except 方法。不要忘记添加 System.Linq 命名空间。喜欢;

    使用默认值产生两个序列的集合差 相等比较器来比较值。

    string[] str = new string[] { "Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat" };
    string[] str1 = new string[] { "Mon", "Tues", "Wed" };
    
    var str2 = str.Except(str1);
    
    foreach (var i in str2)
    {
       Console.WriteLine(i);
    }
    

    输出将是;

    Sun
    Thur
    Fri
    Sat
    

    这里是 demonstration

    【讨论】:

    【解决方案3】:
    string[] str = new string[] { "Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat" };
    string[] str1 = new string[] { "Mon", "Tues", "Wed" };
    
    var str2 = str.Where(t => !str1.Contains(t)).ToArray();
    

    【讨论】:

      【解决方案4】:

      您也可以将WhereContains 一起使用

      var str2 = str.Where(s => !(str1.Contains(s)).Select(s => s);
      

      【讨论】:

        猜你喜欢
        • 2023-02-16
        • 1970-01-01
        • 2013-03-02
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多