c# - 带有绑定到列的子句的 LINQ 查询
问题描述
我遇到了这个 LINQ 语句,经过一些详尽的谷歌搜索,我还没有找到一个全面的解释:
var x = Context.TableName
.AsNoTracking()
.Where(x => (x.ColumnName & 2) == 2)
.Select(x => new {col = x.Column})
.ToList();
我没有完全理解的部分是.Where
这里的子句。
.Where(x => (x.ColumnName & 2) == 2)
我不确定该值是否解析为'AND'
子句?
附加信息:发现 & 表示按位与运算符。但它是如何应用于现有价值的呢?例如,如果 Column 值为 514,则正在检索它,但如果它是 512,则不检索它。我只想了解按位如何检查其在上述值(514、512)中的适用性。
编辑:按位输入 3。应该是2!
解决方案
假设它ColumnName
是整数或其他整数类型,(x.ColumnName & 2)
则将执行按位与。由于 20000 0000 0010
在二进制微积分中,表达式(x.ColumnName & 2) == 2
意味着二进制微积分中的值x.ColumnName
必须匹配模式**** **** ***1*
。
例如,如果 x.ColumnName 的值为 514,那么 的结果(x.ColumnName & 2)
将是
0010 0000 0010 (514)
&
0000 0000 0010 (2)
=
0000 0000 0010 (2)
并且表达式(x.ColumnName & 2) == 2
将返回true
。
如果 x.ColumnName 的值为 512,则结果(x.ColumnName & 2)
将为
0010 0000 0000 (512)
&
0000 0000 0010 (2)
=
0000 0000 0000 (0)
并且表达式(x.ColumnName & 2) == 2
将返回false
。
推荐阅读
- reactjs - 如何修复绑定元素'children'隐式具有'any' type.ts(7031)?
- ruby - 如何通过组合具有不同值的键来合并具有相同 ID 的两个哈希
- shell - 我正在尝试在鱼壳上运行 init 0 但出现奇怪的错误
- javascript - 将 asp.net mvc 模型传递给 Javascript 函数
- xcode - Xcode Apple Clang 启用 avx512
- python - 使用 python 搜索特定的重复
- javascript - 如何在 vuejs 中显示没有路由器视图父视图的子视图?
- angularjs - fullpage.js 无法阻止被动事件侦听器中的默认值
- swift - 在 Swift 中用引号替换字符串部分
- algorithm - 是否有一种有效的算法可以找到一组无限线的所有交点?