C#将位转换为布尔值

35

我有一个Microsoft SQL Server数据库,其中包含一个BIT类型的数据字段。

该字段将具有01值来表示false和true。

当我检索数据时,我想将获取到的值转换为falsetrue,而不使用if条件将数据转换为false(如果它是0)或true(如果它是1)。

我想知道在C#中是否有一个函数可以通过传递位值直接实现这个目的?

5个回答

40
DataReader.GetBoolean(x)
或者
Convert.ToBoolean(DataRow[x])

9
Convert.ToBoolean((byte)1); 返回 true - abatishchev

35

根据您执行SQL查询的方式可能会有所不同。例如,如果您有一个数据读取器,您可以直接读取布尔值:

using (var conn = new SqlConnection(ConnectionString))
using (var cmd = conn.CreateCommand())
{
    conn.Open();
    cmd.CommandText = "SELECT isset_field FROM sometable";
    using (var reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            bool isSet = reader.GetBoolean(0);
        }
    }
}

当执行仅返回BIT的存储过程或UDF时,是否可以不需要Read()而正常工作,例如:bool isSet = cmd.ExecuteReader().GetBoolean(0); - dakab

14
你是如何从数据库中提取字段的? SqlDataReader类有一个GetBoolean方法,可以为你进行翻译:
bool yourBoolean = reader.GetBoolean(reader.GetOrdinal("Your_Bit_Column"));

5

3

ASP.NET 2.0SqlDataSource在处理BIT类型字段时,返回值为01

ASP.NET 4.0SqlDataSource处理BIT类型字段时,返回适当的字符串值-Boolean.TrueString"True")或 Boolean.FalseString"False")。


@Guillaume: SQL的类型是BIT还是.NET的类型是byte? - abatishchev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接