Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何比较两个列表内容数据并返回不匹配的值?_C#_.net_Linq_List - Fatal编程技术网

C# 如何比较两个列表内容数据并返回不匹配的值?

C# 如何比较两个列表内容数据并返回不匹配的值?,c#,.net,linq,list,C#,.net,Linq,List,我有两张单子。哪些内容是简单的字符串值。例如: IList1内容: 复仇者 百叶窗岛 开端 黑暗骑士崛起 清单2内容: 复仇者 百叶窗岛 开端 黑暗骑士崛起 公园及康乐 丑行 我想比较两个列表,它将返回不匹配的值。与本例类似,它将返回公园、娱乐和丑闻,因为它们与列表1的值不匹配 我试过了。但它会抛出未设置为对象实例的异常对象引用 static void Main(string[] args) { List<string> list1 = new List<

我有两张单子。哪些内容是简单的字符串值。例如:

IList1内容:

复仇者 百叶窗岛 开端 黑暗骑士崛起 清单2内容:

复仇者 百叶窗岛 开端 黑暗骑士崛起 公园及康乐 丑行 我想比较两个列表,它将返回不匹配的值。与本例类似,它将返回公园、娱乐和丑闻,因为它们与列表1的值不匹配

我试过了。但它会抛出未设置为对象实例的异常对象引用

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();