【问题标题】:Differencing Two String Lists in C#在 C# 中区分两个字符串列表
【发布时间】:2013-01-10 18:34:22
【问题描述】:

我正在尝试创建一个字符串列表,其中包含列表 A 和列表 B 之间不同的所有项目。我有以下代码,我觉得我很接近,但最后出现语法错误线。任何帮助将不胜感激:

 List<string> ListA = new List<string>(textBox_CompareListA.Text.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries));
 List<string> ListB = new List<string>(textBox_CompareListB.Text.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries));

 List<string> DifferencesList = ListA.Except(ListB, StringComparer.OrdinalIgnoreCase).Union(ListB.Except(ListA, StringComparer.OrdinalIgnoreCase));

这是错误:http://screencast.com/t/Y8S9LC2Y

【问题讨论】:

    标签: c# list except


    【解决方案1】:

    您应该尝试调用Enumerable.ToList 以从您的查询表达式中获取列表。

    List<string> DifferencesList = ListA.Except(ListB, StringComparer.OrdinalIgnoreCase).Union(ListB.Except(ListA, StringComparer.OrdinalIgnoreCase)).ToList();
    

    【讨论】:

      【解决方案2】:

      我忍不住要指出这一点:

       List<string> diffs = ListA.Union(ListB).Except(ListA.Intersect(ListB)).ToList();
      

      根据您的数据,它可能会更快(我相信如果交叉点很小)。

      【讨论】:

        【解决方案3】:

        更改最后一行代码:

        List<string> DifferencesList = ListA.Except(ListB, StringComparer.OrdinalIgnoreCase).Union(ListB.Except(ListA, StringComparer.OrdinalIgnoreCase));
        

        收件人:

        var DifferencesList = ListA.Except(ListB, StringComparer.OrdinalIgnoreCase).Union(ListB.Except(ListA, StringComparer.OrdinalIgnoreCase));
        

        或者:

        IEnumerable<string> DifferencesList = ListA.Except(ListB, StringComparer.OrdinalIgnoreCase).Union(ListB.Except(ListA, StringComparer.OrdinalIgnoreCase));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-23
          • 2019-03-14
          • 1970-01-01
          • 2020-08-31
          • 2022-09-28
          • 1970-01-01
          • 2014-11-29
          • 2015-10-18
          相关资源
          最近更新 更多