使用|| LinQ中的运算符

新的

我有一个使用||的小​​例子 运算符,Where()但可能有问题:

var list = new List<string>
{
   "One",
   "Two",
   "Three"
};

string s = "One";
var numbers = list.Where(x => x == s || !string.IsNullOrEmpty(x));

foreach(var number in numbers)
{
   Console.WriteLine(number);

   // output:
   // One
   // Two
   // Three
}

s = null;    
numbers = list.Where(x => x == s || !string.IsNullOrEmpty(x));

foreach(var number in numbers)
{
   Console.WriteLine(number);

   // output:
   // One
   // Two
   // Three
}

在第一种情况下,为什么!string.IsNullOrEmpty(x)我们还真时仍要进行检查x == s

我了解:

if (A && B)
{
   // we need A and B are true
}

if (A || B)
{
   // we need A is true or B is true
   // if A is true, no ned to check B is true or not
}

所以,我的问题是:我误解了什么?

伊恩

您说的很对:

a || b

不会评估b是否atrue,但:

WhereLINQ使用Lambda表达式检查Enumerable中的每个元素,而不管先前的结果如何。因此,当您执行以下操作时:

string s = "One";
var numbers = list.Where(x => x == s || !string.IsNullOrEmpty(x));

只要Wherelambda表达式有效,它就会检查查询中的每个元素

x == s || !string.IsNullOrEmpty(x)); //x = "One", x == s is true
x == s || !string.IsNullOrEmpty(x)); //x = "Two", !string.IsNullOrEmpty(x) is true
x == s || !string.IsNullOrEmpty(x)); //x = "Three", !string.IsNullOrEmpty(x) is true

这样就得到了所有要素。

TakeWhile如果您想在不再满足条件时立即停止获取查询结果,请考虑使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

haskell中运算符的$使用规则

来自分类Dev

如何使用!Scala中的运算符?

来自分类Dev

在Repeater中对if语句使用“ <”或“>”运算符

来自分类Dev

使用OR运算符在LINQ表达式中添加between子句

来自分类Dev

使用>>运算符

来自分类Dev

Dynamics CRM SDK-使用OrganizationServiceContext的linq的IN运算符

来自分类Dev

在MongoDB Linq查询中使用OR运算符的异常行为

来自分类Dev

使用“和”运算符的 Linq 搜索文本

来自分类Dev

为什么“ as”运算符在C#中不使用隐式转换运算符?

来自分类Dev

在C#中的if运算符中使用like运算符

来自分类Dev

运算符“ +”的歧义使用

来自分类Dev

使用条件运算符

来自分类Dev

使用“?:”运算符返回

来自分类Dev

使用awk的〜运算符

来自分类Dev

对向量使用[] []运算符?

来自分类Dev

使用or和not运算符

来自分类Dev

使用-Like运算符

来自分类Dev

运算符'!='的歧义使用?

来自分类Dev

使用“?:”运算符返回

来自分类Dev

在 if () 运算符中使用 &&

来自分类Dev

在Swift中在参数范围之外使用运算符

来自分类Dev

TypeError:无法使用“ in”运算符在[{}]中搜索“ _id”

来自分类Dev

为什么在scala中向后使用concat运算符?

来自分类Dev

Uncaught TypeError:无法使用'in'运算符在中搜索'length'

来自分类Dev

使用Python在mongodb查询中的逻辑运算符

来自分类Dev

在Oracle中的“ IN”运算符中使用记录数组

来自分类Dev

无法使用“ in”运算符在“ in”中搜索“ 728”

来自分类Dev

使用指针成员变量在类中重载+运算符

来自分类Dev

在JavaScript中多次使用扩展运算符?