Announcement

Collapse
No announcement yet.

null-Wert bei LINQ

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • null-Wert bei LINQ

    Hallo nochmals,

    ich habe da ein Problem, das ich mir nicht so einfach erklären kann.
    Ich habe eine Tabelle "Users". Ich habe eine einfache LINQ-Anweisung, die mir immer null zurückgibt:

    Code:
    var user = UserClass.getUser("123456");
    public Users getUser(string loginId)
    {
         return db.Users.SingleOrDefault(u => u.Login.Trim() == loginId.Trim());
    }
    Ich verstehe einfach nicht, warum diese Anweisung mir immer einen null-Wert zurückgibt, obwohl die lognId "123456" in der Tabelle vorhanden ist. Hat jemand eine Idee? Muss die LINQ-Anweisung anders aufgebat sein?

    Dank im Voraus.

  • #2
    Sollte eigentlich funktionieren.

    Sollte die loginID nicht zwangsweise eindeutig sein? Zumindest würde ich das erwarten.
    Wenn du den Fehler gefunden hast würde ich dir empfehlen zumindest an u.Login das Trim loszuwerden. Das Anwenden einer Funktion auf eine Spalte sorgt nur dafür das Indizes nicht mehr ziehen und das langsam wird. Potentiell unnötige Leerzeichen solltest du wenn schon beim Schreiben in die Tabelle verhindern um das vorhanden sein von "123456 " und "123456" zu verhindern was dein jetzigen Code, wenn er denn funktioniert, knallen lassen würde.

    Comment


    • #3
      Hallo Ralf,

      leider arbeite ich mit einer alten Tabelle mit bereits vorhandenen Daten. Diese sind meistens als "nchar" definiert und so in vielen Splaten auch mit Leerzeichen gespeichert worden. Ich habe alle Variante der Abfrage ausprobiert. Es hat leider nichts genutzt. Die gleiche Abfrage funktioniert, wenn ich z.B. so etwas habe: return db.Users.SingleOrDefault(u => u.UserID == id);

      Gruß

      Comment


      • #4
        Dann würde ich dir empfehlen den Ausdruck mal über zum Beispiel LinqPad auszuführen. Dort kannst du dir das generierte SQL ansehen an dem du vielleicht das Problem erkennst.

        Comment

        Working...
        X