C# 如何比较两个列表内容数据并返回不匹配的值?
我有两张单子。哪些内容是简单的字符串值。例如: IList1内容: 复仇者 百叶窗岛 开端 黑暗骑士崛起 清单2内容: 复仇者 百叶窗岛 开端 黑暗骑士崛起 公园及康乐 丑行 我想比较两个列表,它将返回不匹配的值。与本例类似,它将返回公园、娱乐和丑闻,因为它们与列表1的值不匹配 我试过了。但它会抛出未设置为对象实例的异常对象引用C# 如何比较两个列表内容数据并返回不匹配的值?,c#,.net,linq,list,C#,.net,Linq,List,我有两张单子。哪些内容是简单的字符串值。例如: IList1内容: 复仇者 百叶窗岛 开端 黑暗骑士崛起 清单2内容: 复仇者 百叶窗岛 开端 黑暗骑士崛起 公园及康乐 丑行 我想比较两个列表,它将返回不匹配的值。与本例类似,它将返回公园、娱乐和丑闻,因为它们与列表1的值不匹配 我试过了。但它会抛出未设置为对象实例的异常对象引用 static void Main(string[] args) { List<string> list1 = new List<
static void Main(string[] args)
{
List<string> list1 = new List<string>();
list1.Add("The Avengers");
list1.Add("Shutter Island");
list1.Add("Inception");
list1.Add("The Dark Knight Rises");
List<string> list2 = new List<string>();
list2.Add("The Avengers");
list2.Add("Shutter Island");
list2.Add("Inception");
list2.Add("The Dark Knight Rises");
list2.Add("Parks and Recreation");
list2.Add("Scandal");
try
{
List<string> difference = Comparator(list1, list2);
foreach (var value in difference)
{
Console.WriteLine(value);
}
}
catch (System.NullReferenceException e)
{
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
public static List<string> Comparator(List<string> list1, List<string> list2)
{
IEnumerable<string> differenceQuery = list1.Except(list2);
List<string> differ = null;
foreach (string s in differenceQuery)
differ.Add(s);
return differ;
}
有人能帮我吗?
提前感谢。除此之外,方法与您描述的完全相同,因此只需调用ToList即可在列表中获得结果:
您的代码会引发NullReffereceException,因为未初始化筛选器变量:
List<string> differ = null;
更新-整个代码,按预期工作
使用除外
问题就在这里
List<string> differ = null;
需要
List<string> differ = new List<string>();
这一行的问题在于:
List<string> differ = null;
List<string> difference = Comparator(list1, list2);
但更容易的是替换这一行:
List<string> differ = null;
List<string> difference = Comparator(list1, list2);
作者:
列表差异=新列表;在比较器方法中,更改列表different=null;for List different=新列表;列表差异=null;//这是您的错误来源。与所需结果相关的元素的顺序或出现次数是多少?List Difference=new List;他已经在使用except了。但是,它在我的情况下不起作用。抛出异常。我在这里遗漏了什么?所以你的错误在别的地方。我已经发布了完整的方法代码,并且它按照预期工作。非常感谢@MarcinJuraszek。它很好用。我错过了这一行List difference=list2.Exceptlist1.ToList;
List<string> differ = null;
List<string> differ = new List<string>();
List<string> differ = null;
List<string> differ = new List<string>();
List<string> difference = Comparator(list1, list2);
List<string> difference = list1.Except(list2).ToList();