Getting a boolean from a SELECT in SQL Server into a bool in C#?

Viewed 14854

I have this code in my SELECT:

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], 

and in my ASP.NET DTO I have:

public partial class GetTestsDTO
{
    public bool? GradePass { get; set; }
    // the following line is what is giving the error. If I remove
    // the line it will not try to convert the data and there is no
    // error. Note that I want to put this into a bool as web.api
    // then passes it to the client as a bool
    public bool Current { get; set; } 
    public DateTime? CompletedDate { get; set; }
}

It's giving me an error and I would appreciate some help.

The error is:

message=The specified cast from a materialized 'System.Int32' type to the 'System.Boolean' type is not valid.

4 Answers

below too works for me :-

I tried returning Boolean in like 'true' / 'false' and it too worked.
Environ: C# - Dapper
SQL :- Sql Server 2012

Example:- CASE WHEN (@AdminTestId IS NULL AND @UserTestId IS NULL) THEN 'false'
WHEN (@AdminTestId = temp.AdminTestId AND @UserTestId = A.UserTestId) THEN 'true'

Both worked 'true' or 'TRUE' OR 'false' or 'FALSE' -- both the cases.

So besides the accepted answer, which is a working answer, this also worked for me, yes, it may be attributed to Dapper as well, if, in case, its doesn't work in normal ADO.NET

Related