加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – LINQ Where()单管或双管/&符号

发布时间:2020-12-15 18:32:58 所属栏目:百科 来源:网络整理
导读:任何人都在评论我们是否应该使用“我”或“II”和“”或“”在我们的LINQ Where()扩展/查询?与LINQ to SQL有什么区别?由此产生的表达树比星期五下午我的大脑还要多 谢谢, static void Main(string[] args){ var numbers = new int[] { 1,2,3,4,5,6,7,8,9 }
任何人都在评论我们是否应该使用“我”或“II”和“&”或“&&”在我们的LINQ Where()扩展/查询?与LINQ to SQL有什么区别?由此产生的表达树比星期五下午我的大脑还要多

谢谢,

static void Main(string[] args)
{
    var numbers = new int[] { 1,2,3,4,5,6,7,8,9 };

    var q1 = numbers.Where(i => i == 1 | i == 2);
    var q2 = numbers.Where(i => i == 1 || i == 2);

    var q3 = numbers.Where(i => i == 1 & i < 3);
    var q4 = numbers.Where(i => i == 1 && i < 3);

    Write(q1);
    Write(q2);
    Write(q3);
    Write(q4);
}

static void Write<T>(IEnumerable<T> t)
{
    foreach (var i in t)
        Console.Write("{0} ",i);

    Console.WriteLine();
}


Results:

    1 2
    1 2
    1
    1

解决方法

你想要|| /&&.

那么,单管(| /&)通常用于逐位算术,并且(除了其他问题之外)可能使代码库更难理解;它可以在LINQ-to-Objects中工作(因为按位仍然为bool定义),但没有通常的短路.但是如果你的数据源是一个数据库(即混合中有一个表达式解析器),你可能会发现它会爆炸.

好;按位可能会产生误导;但是||和&&仍然是表达意图的最合乎逻辑和预期的方式.我为任何困惑道歉.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读