【发布时间】:2019-08-20 14:53:33
【问题描述】:
如何为列分配真值或假值。我正在计算一个 ID 的值。然后检查计数并为其分配真或假布尔值。在视图方面,我需要检查传入的值是真还是假,并根据真假值在我的视图中显示不同的文本。但现在我的 Item.Complete 值总是假的。我在这里做错了什么?
var sqlst = @"select count(*) as columnCount, mem_name as Name, mem_add as address from my_table whereid = 1234"
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MY_CONNECTION"].ConnectionString))
{
connection.Open();
using (var sqlCommand = new SqlCommand(sqlst, connection)
using (var sqlResult = sqlCommand.ExecuteReader())
{
while (sqlResult.Read())
{
var checkcount = Convert.ToInt32(sqlResult["columnCount"].ToString());
if (checkcount != 0)
{
Item.Complete = sqlResult["columnCount"].ToString() == "YES" ? true:false;
}
else
{
Item.Complete = sqlResult["columnCount"].ToString() == "NO" ? true: false;
}
}
}
}
【问题讨论】:
-
您确定名为
ColumnCount的列具有名为YES的值吗?因为这不是我与计数相关联的词。 (另外,它不可能是YES,因为那样Convert.ToInt32就不起作用了。要么你的列名是错误的,要么你的值是错误的。) -
我的模型是这样的 public bool columnCount { get;放; }.我可以看到在 checkcount 中获取整数值。
-
您不需要ternary operator 来指定真假,因为
==返回一个布尔值。 -
如果列是
BIT并映射到布尔值,那么整个.ToString()舞蹈是多余的。Item.Complete = (bool) sqlResult["columnCount"]应该可以。 -
您提供的查询是错误的,因为您没有使用任何带有
count(*)的group by子句,所以它会出错。