Beim Versuch, Daten aus der Datenbank (SQL Server / Entity Framework) abzurufen, wurde der folgende Fehler angezeigt:

Der Operator "==" kann nicht für Operanden von ("enumDropDown") oder "int" -Operationen verwendet werden.

Und ich kann die Abfrage nicht gut in den Controller schreiben, es gibt mir einen Fehler in der Nähe von DropdownClassList == 2.

Controller: (ich habe es versucht)


var listaOdbioruNadgodzin = _ecpContext.Karta.Where(x => x.Login == userName && x.DropdownClassList== 2)

Modell:

public partial class modelCard
{
    public enumDropDown? DropdownClassList{ get; set; }
}

public enum enumDropDown
{
    test1 = 1,
    test2 = 2,
    test3 =3
}

1
ZombieDivision 24 Feb. 2020 im 10:11

3 Antworten

Beste Antwort

Ändern Sie Ihren Code wie folgt:

var listaOdbioruNadgodzin = _ecpContext.Karta.Where(
               x => x.Login == userName && 
               x.DropdownClassList== enumDropDown.test2)

Sie vergleichen derzeit einen Aufzählungswert mit einer Zeichenfolge "2", während Sie ihn mit einem Aufzählungstyp vergleichen müssen.

Es gibt zwei weitere Optionen für Sie (obwohl nicht empfohlen, und sie funktionieren identisch miteinander Wie vergleiche ich Enum- und Int-Werte?)

x.DropdownClassList == (enumDropDown?)2

Oder

(int)x.DropdownClassList == 2
2
Athanasios Kataras 24 Feb. 2020 im 07:14

Laut dem Kommentar von @juergen d sollten Sie Ihren Code ändern, um enumDropDown anstelle von int zu vergleichen.

var listaOdbioruNadgodzin = _ecpContext.Karta
             .Where(x => x.Login == userName && x.DropdownClassList == enumDropDown.test2);
1
Phong 24 Feb. 2020 im 07:15

Sie sollten den Eigenschaftswert mit einem Wert der Aufzählung vergleichen:

var listaOdbioruNadgodzin = _ecpContext.Karta.Where(x => x.Login == userName && x.DropdownClassList == enumDropDown.test2)
2
kaffekopp 24 Feb. 2020 im 07:14