如何将 SQL Server 中的 SELECT 查询结果的布尔值转化为 C# 中的 bool 类型?

29 浏览
0 Comments

如何将 SQL Server 中的 SELECT 查询结果的布尔值转化为 C# 中的 bool 类型?

我在SELECT语句中有以下代码:\n

SELECT  A.CompletedDate,
    CASE
        WHEN (@AdminTestId IS NULL AND @UserTestId IS NULL) THEN 0
        WHEN (@AdminTestId = temp.AdminTestId AND @UserTestId = A.UserTestId) THEN 1
        WHEN (@AdminTestId = temp.AdminTestId AND @UserTestId IS NULL) THEN 1
    ELSE 0
    END AS [Current], 

\n在我的ASP.NET DTO中有:\n

public partial class GetTestsDTO
{
    public bool? GradePass { get; set; }
    // 下面这行代码导致了错误。如果我移除这行代码,它将不会尝试转换数据,也不会出现错误。请注意,我想将其放入一个bool类型中,然后web.api将它作为bool类型传递给客户端
    public bool Current { get; set; } 
    public DateTime? CompletedDate { get; set; }
}

\n它给我报错了,我希望得到一些帮助。\n错误信息为:\n

\nmessage=指定从实例化的\'System.Int32\'类型到\'System.Boolean\'类型的转换是无效的。\n

0
0 Comments

问题的原因是SQL Server不能直接返回布尔值,而且在给定的代码中也没有返回布尔值。解决方法是将整数值从SQL查询中获取到C#对象中,然后使用一个'映射'函数将整数转换为布尔值。

解决方法1是创建一个简单的方法,将整数转换为布尔值。方法如下:

public static boolean integerToBoolean(Integer myInt){

return myInt == 1 ? true : false;

}

解决方法2是使用Convert.ToBoolean(Int32)方法。可以通过Convert.ToBoolean(Int32)方法将整数转换为布尔值。

祝好运!

0
0 Comments

问题的原因是在SQL Server中,返回的是一个整数类型,而在C#中需要的是布尔类型。解决方法有以下几种:

1. 在SQL查询中使用CONVERT(bit, 0)CONVERT(bit, 1)来将整数转换为布尔类型。

2. 可以将整个CASE语句包裹在CONVERT函数中,如CONVERT(bit, CASE ... END)

3. 可以使用CAST(1 AS bit)CAST(0 AS bit)来代替CONVERT(bit, 1)CONVERT(bit, 0)。这样做的好处是代码更简洁。

另外,也可以在客户端进行类型转换,如在C#代码中使用Convert.ToBoolean函数将整数转换为布尔类型。

最后,还可以将CONVERT函数放在CASE之外,这样就不需要在每个THEN语句中都进行转换了。

以上就是解决这个问题的几种方法。

0
0 Comments

问题的原因是在SQL Server中,查询结果返回的布尔值需要在C#中以bool类型接收,但是在SQL Server中没有直接返回布尔值的数据类型。解决方法是将查询结果中的0和1转换为BIT数据类型,然后在C#中使用bool类型接收。

在SQL Server中,可以通过使用CASE语句将0和1转换为BIT数据类型。下面是一个示例:

SELECT  A.CompletedDate,
  CASE
    WHEN ( IS NULL AND  IS NULL) 
    THEN CAST(0 AS BIT)
    WHEN ( = temp.AdminTestId AND  = A.UserTestId) 
    THEN CAST(1 AS BIT)
    WHEN ( = temp.AdminTestId AND  IS NULL) 
    THEN CAST(1 AS BIT)
   ELSE CAST(0 AS BIT)
  END AS [Current]

或者可以将整个表达式一起转换为BIT数据类型:

SELECT  A.CompletedDate,
    CAST((CASE
         WHEN ( IS NULL AND  IS NULL) THEN 0
         WHEN ( = temp.AdminTestId AND  = A.UserTestId) THEN 1
         WHEN ( = temp.AdminTestId AND  IS NULL) THEN 1
         ELSE 0
         END)
         AS BIT) AS [Current]

在上述代码中,通过使用CAST函数将0和1转换为BIT数据类型,然后将结果命名为[Current]。

在C#中,可以使用bool类型来接收查询结果中的布尔值。此外,根据SQL Server数据类型映射,BIT数据类型在.NET Framework中对应的类型是Boolean,而在SqlDbType枚举中对应的类型是Bit。

要将SQL Server中的查询结果转换为C#中的bool类型,可以在SQL Server中使用CASE语句将0和1转换为BIT数据类型,然后在C#中使用bool类型来接收结果。

0