使用 Razor 将 int 转换为一组列
Converting an int into a set of columns with Razor
在我的模型中,我收到一个 属性,它是一个由位标志组成的整数,表示可以访问一组设施。因此,如果对象具有 A、B、D 但缺少 C,则其代码将为 7 (1 + 2 + 0 + 4)。
在我生成的 table 中,如果相应的设施存在于每个单独对象的信息中,我更愿意将其显示为带有 "Y" 的一堆列。
但是当输入时出现了一个模式,如下所示。
<td>
@if ((station.Facility & 1) == 1) {<span>yes</span>}
</td>
<td>
@if ((station.Facility & 2) == 2) {<span>yes</span>}
</td>
...
<td>
@if ((station.Facility & 1024) == 1024) {<span>yes</span>}
</td>
对代码猴子的任何半烂借口都觉得这里应该少很多行,因为我们应该重复
<td>
@if ((station.Facility & bit) == bit) {<span>yes</span>}
</td>
除了微小的位,它正在通过 2 的力量大便。我有点 DUI(在影响下发展),因为 2016 年刚刚开始,可能是原因我不知道该怎么做。
尽管如此 - 我该怎么做?
另外,我也怀疑条件表达式可能被简化了,因为现在有嵌套的括号。我很惊讶 AND(& 运算符)比等式(== 运算符)绑定更弱,但这就是我解决它的方式。我考虑过使用移位(<< 运算符),但语法实际上变得更加复杂,并且考虑到速度不是问题,我不必使用它(除非它简化代码)。
有没有更流畅的方法来实现?
尝试 for 语句。
@{ int max = 10; }
@for(int i = 1; i <= max; i++)
{
if (station.Facility & (1 << i-1) != 0)
{<span>yes</span>}
}
还有待读-一个post here.
在我的模型中,我收到一个 属性,它是一个由位标志组成的整数,表示可以访问一组设施。因此,如果对象具有 A、B、D 但缺少 C,则其代码将为 7 (1 + 2 + 0 + 4)。
在我生成的 table 中,如果相应的设施存在于每个单独对象的信息中,我更愿意将其显示为带有 "Y" 的一堆列。
但是当输入时出现了一个模式,如下所示。
<td>
@if ((station.Facility & 1) == 1) {<span>yes</span>}
</td>
<td>
@if ((station.Facility & 2) == 2) {<span>yes</span>}
</td>
...
<td>
@if ((station.Facility & 1024) == 1024) {<span>yes</span>}
</td>
对代码猴子的任何半烂借口都觉得这里应该少很多行,因为我们应该重复
<td>
@if ((station.Facility & bit) == bit) {<span>yes</span>}
</td>
除了微小的位,它正在通过 2 的力量大便。我有点 DUI(在影响下发展),因为 2016 年刚刚开始,可能是原因我不知道该怎么做。
尽管如此 - 我该怎么做?
另外,我也怀疑条件表达式可能被简化了,因为现在有嵌套的括号。我很惊讶 AND(& 运算符)比等式(== 运算符)绑定更弱,但这就是我解决它的方式。我考虑过使用移位(<< 运算符),但语法实际上变得更加复杂,并且考虑到速度不是问题,我不必使用它(除非它简化代码)。
有没有更流畅的方法来实现?
尝试 for 语句。
@{ int max = 10; }
@for(int i = 1; i <= max; i++)
{
if (station.Facility & (1 << i-1) != 0)
{<span>yes</span>}
}
还有待读-一个post here.