2016-07-25 21 views
-6

Ich habe gespeicherte Prozedur, die zurückgibt:Wie integer konvertieren in C# boolean

  • - keine Benutzer keine App keine Rolle in den Tabellen
  • - wahr, es Benutzer, Rolle, app, die u erfordern
  • - kein Benutzer mit diesem Namen ist = false
  • - es gibt keine R ole mit diesem Namen = false

Wenn ich die gespeicherte Prozedur in der C# nenne ich bekommen:

konvertieren nicht implizit Typ Kann 'Bool' auf 'int'

public int IsUserInRole(IsUserInRole userInRole) 
{ 
    var model = _userRepository.CheckIfUserIsInRole(userInRole); 
    if (model == 1) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

Ich muss dies verwenden, um den angemeldeten Benutzer zu überprüfen, welche Rolle zugewiesen ist, damit ich später basierend auf dem UserRole autorisieren kann.

Also muss ich wahr oder falsch von der SP, das bedeutet, dass ich Integer konvertieren müssen

Boolean habe ich versuchen Better way to convert an int to a boolean und http://www.dotnetperls.com/convert-bool-int aber kein Glück für mich da :).

Irgendwelche Ratschläge, wie man dieses Problem löst?

+1

Du bist schon wieder 'bool', also was ist das Problem? Ändern Sie die Signatur in: 'public bool IsUserInRole' und body to (wenn Sie es prägnanter haben wollen):' return _userRepository.CheckIfUserIsInRole (userInRole) == 1; ' –

+0

Sie benötigen' public bool IsUserInRole (IsUserInRole userInRole) ' –

+0

Die gespeicherte Prozedur Rückgabe-Byte nicht Bool, so kann ich die Aktion nicht bool – Tozi

Antwort

1

Dieser Ihre Fehler lösen (mit einem bool Rückgabetyp anstelle der int) und werden Ihren Code kürzer machen:

public bool IsUserInRole(IsUserInRole userInRole) 
{ 
    return _userRepository.CheckIfUserIsInRole(userInRole) == 1; 
} 
2

Let intVal eine ganze Zahl sein und boolVal eine boolean Variable sein, dann können Sie etwas tun:

boolVal = intVal==1; 

Schauen Sie in Ihre Methode, Sie haben den Rückgabewert als int angegeben und versucht, einen Boolen Wert zurückgeben das verursacht den angegebenen Fehler. Wenn Sie den Rückgabetyp auf bool ändern, funktioniert Ihr Code wie erwartet. In vereinfachter Weise können Sie die Methodensignatur wie die folgenden ändern:

public bool IsUserInRole(IsUserInRole userInRole) 
{ 
    return _userRepository.CheckIfUserIsInRole(userInRole)==1; 
} 
+0

Danke, ich denke, dass das Problem zu lösen.Ich schreibe zurück in wenigen Minuten, nachdem ich es getestet habe. – Tozi

+0

Hat es funktioniert ???? –

+0

Ich habe die Methode getestet und es funktioniert einwandfrei. Danke – Tozi