and*_*eer 6 c# linq linq-to-sql
任何人都想评论我们是否应该在LINQ Where()扩展/查询中使用"I"或"II"和"&"或"&&"?与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
Run Code Online (Sandbox Code Playgroud)
你想要||
/ &&
.
那么,单管(|
/ &
)通常用于逐位算术,并且(除了其他问题之外)可能使代码库更难理解; 它会工作在LINQ到对象(因为按位仍定义为bool
),但没有通常的短路.但是如果你的数据源是一个数据库(即混合中有一个表达式解析器),你可能会发现它会爆炸.
好; 按位可能会产生误导; 但是|| 和&&仍然是表达意图的最合乎逻辑和预期的方式.我为任何困惑道歉.
归档时间: |
|
查看次数: |
2675 次 |
最近记录: |