0

我正在尝试创建一个字符串列表,其中包含列表 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

语法错误

4

3 回答 3

4

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

List<string> DifferencesList = ListA.Except(ListB, StringComparer.OrdinalIgnoreCase).Union(ListB.Except(ListA, StringComparer.OrdinalIgnoreCase)).ToList();
于 2013-01-27T05:50:36.163 回答
2

我忍不住指出这一点:

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

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

于 2013-01-27T06:01:08.040 回答
1

更改最后一行代码:

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));
于 2013-01-27T05:50:27.863 回答