Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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# linq不等于(!=)的任意运算符_C#_.net_Linq_List - Fatal编程技术网

C# linq不等于(!=)的任意运算符

C# linq不等于(!=)的任意运算符,c#,.net,linq,list,C#,.net,Linq,List,我很难理解linq any操作符。让我们考虑下面的代码片段(使用VS 2010和.NET 4)< /P> 这正是我所期待的。但是,如果我将相等运算符(==)更改为不相等(!=),我会得到这个结果 a b c d 这不应该吗 a d 如果我将if条件更改为 if(!(secondSample.Any(data=> data.ToString() == s))) 我明白了 所以我的问题是,我是否以错误的方式解释了Any运算符?不应该 if(secondSample.Any(data=&g

我很难理解linq any操作符。让我们考虑下面的代码片段(使用VS 2010和.NET 4)< /P> 这正是我所期待的。但是,如果我将相等运算符(
==
)更改为不相等(
!=
),我会得到这个结果

a
b
c
d
这不应该吗

a
d
如果我将if条件更改为

if(!(secondSample.Any(data=> data.ToString() == s)))
我明白了

所以我的问题是,我是否以错误的方式解释了Any运算符?不应该

if(secondSample.Any(data=> data.ToString() != s))

secondSample
中的值不在sample

中时,求值为true。当更改为时,求值为All,而不是Any=

 if(secondSample.All(data=> (data.ToString() != s)))

当你否定一个表达式时,内部或变成了and:“A或B”的否定变成了“不是A也不是B”。

当你改变为时,它是全部,不是任何=

 if(secondSample.All(data=> (data.ToString() != s)))

当你否定一个表达式时,内部or变成了and:“A或B”的否定变成了“不是A也不是B”。

如果你想使用!=运算符,您希望得到
ad
,然后应使用
All
而不是
Any

 if(secondSample.All(data=> data.ToString() != s))
           Console.WriteLine(s);
解释
secondSample.Any(data=>data.ToString()!=s)
将为真,如果
secondSample
中只有一个元素不等于给定的数据项(在您的
示例
列表中),因此在您的情况下它将始终为真,并且您可以看到所有元素都写入控制台

更好的解决方案有两个数组A和B,如果您想要使用LINQ的那些A元素不在B中,您可以尝试
除了
,如果您正在寻找公共元素,您可以尝试
相交

List<string> A = new List<string> { "a", "b", "c", "d" };
List<string> B= new List<string> { "b", "c" };

var AnotInB = A.Except(B).ToList(); //a, d

var AInB = A.Intersect(B).ToList(); //b, c
List A=新列表{“A”、“b”、“c”、“d”};
列表B=新列表{“B”,“c”};
var AnotInB=A.Except(B.ToList()//a、 d
var AInB=A.Intersect(B.ToList()//公元前

如果您想使用!=运算符,您希望得到
ad
,然后应使用
All
而不是
Any

 if(secondSample.All(data=> data.ToString() != s))
           Console.WriteLine(s);
解释
secondSample.Any(data=>data.ToString()!=s)
将为真,如果
secondSample
中只有一个元素不等于给定的数据项(在您的
示例
列表中),因此在您的情况下它将始终为真,并且您可以看到所有元素都写入控制台

更好的解决方案有两个数组A和B,如果您想要使用LINQ的那些A元素不在B中,您可以尝试
除了
,如果您正在寻找公共元素,您可以尝试
相交

List<string> A = new List<string> { "a", "b", "c", "d" };
List<string> B= new List<string> { "b", "c" };

var AnotInB = A.Except(B).ToList(); //a, d

var AInB = A.Intersect(B).ToList(); //b, c
List A=新列表{“A”、“b”、“c”、“d”};
列表B=新列表{“B”,“c”};
var AnotInB=A.Except(B.ToList()//a、 d
var AInB=A.Intersect(B.ToList()//公元前

任何操作符基本上都会问“集合中是否有回答谓词的元素”。在您的例子中,它是存在的,因此它是正确的输出。

任何操作符基本上都会问“集合中是否有回答谓词的元素”。在您的情况下,它是存在的,因此它是正确的输出。

!=在任何情况下,一切都是不平等的

所以你读到如果有不相等的,那么你可以打印。 猜猜看,你总是有至少一个不相等的。这就是你得到所有答案的原因

在你的另一个陈述中,你说:不相等的那一个你可以打印


还有更清楚的吗?

!=在任何情况下,一切都是不平等的

所以你读到如果有不相等的,那么你可以打印。 猜猜看,你总是有至少一个不相等的。这就是你得到所有答案的原因

在你的另一个陈述中,你说:不相等的那一个你可以打印

有更清晰的吗?

存在使用

List<string> sample = new List<string> { "a", "b", "c", "d" };   

List<string> secondSample = new List<string> { "b", "c" };

foreach (string s in sample)
        {           
          if (!secondSample.Exists(data => data.ToString() == s))            
               Console.WriteLine(s);
        }
List sample=新列表{“a”、“b”、“c”、“d”};
List secondSample=新列表{“b”,“c”};
foreach(示例中的字符串s)
{           
如果(!secondSample.Exists(data=>data.ToString()==s))
控制台。写入线(s);
}
存在使用

List<string> sample = new List<string> { "a", "b", "c", "d" };   

List<string> secondSample = new List<string> { "b", "c" };

foreach (string s in sample)
        {           
          if (!secondSample.Exists(data => data.ToString() == s))            
               Console.WriteLine(s);
        }
List sample=新列表{“a”、“b”、“c”、“d”};
List secondSample=新列表{“b”,“c”};
foreach(示例中的字符串s)
{           
如果(!secondSample.Exists(data=>data.ToString()==s))
控制台。写入线(s);
}

如果你解释为什么任意运算符是错误的选择,你的答案会更好。如果你解释为什么任意运算符是错误的选择,你的答案会更好。你的解释也很好。简明扼要。我只能标一个作为答案。否则我会把两个都标上你的解释也很好。简明扼要。我只能标一个作为答案。否则我会把两个都标上