2016-10-28 4 views
1

Ich habe eine Linq-Abfrage, die Daten aus SQL-Tabelle übernimmt.
In meiner Datenbank Werte mit den Leerzeichen nach Wert wie folgt geschrieben:
"Johny (und 5 Leerzeichen danach)". Wenn ich versuche, "Johny" zu finden - (ohne Leerzeichen) Abfrage hat nicht funktioniert. Aber wenn ich "Johny" suche (nach Johny - 5 Räume, es zeigte dort nicht) - es arbeitet.
weil ich etwas in der Basis nicht ändern kann, hatte ich keine Erlaubnis dafür.
Wie kann ich es ohne Leerzeichen arbeiten lassen - nur meine Abfrage ändern?
Mein Code:So führen Sie linq Suche mit Leerzeichen

var fidn = (repository.users.Join(repository.usersLG, 
            post => post.pcod ,  
            meta => meta.pcod, 
            (post, meta) => new { Post = post, Meta = meta }) 
          .Where(postAndMeta => postAndMeta.Post.fam_v == "Johny   ").ToList()) 
          .Select(x => new Final { 
           mcod = x.Post.mcod, 
           pcod = x.Post.pcod, 
           c_ogrn = x.Post.c_ogrn, 
           fam_v = x.Post.fam_v, 
           im_v = x.Post.im_v, 
           ot_v = x.Post.ot_v, 
           idGK = x.Meta.idGK }); 

Asp net framework # Einheit Web-Seite c

+0

Sie nutzen könnten 'fam_v.StartsWith ("Johny")' statt '==' – Nico

+1

Es klingt wie das Feld ein fester ist -breite zeichenfeld (z 'CHAR (10)'). Wenn das der Fall ist, füllen Sie einfach Ihren Suchbegriff auf die Breite des Feldes. –

+1

@heinzbeinz Das würde auch 'JohnyBoy' entsprechen, was möglicherweise nicht korrekt ist. –

Antwort

3

Verwendung Trim: (und auch in diesem Fall prüfen, um die Abfragesyntax ändern, IMO besser lesbar, wenn es darum geht, schließt sich)

var fidn = from post in repository.users 
      join meta in repository.usersLG on post.pcod equals meta.pcod 
      where post.fam_v.Trim() == "Johny" 
      select new Final { 
       mcod = post.mcod, 
       pcod = post.pcod, 
       c_ogrn = post.c_ogrn, 
       fam_v = post.fam_v, 
       im_v = post.im_v, 
       ot_v = post.ot_v, 
       idGK = meta.idGK 
      }; 

Aslo haben einen Blick auf C# naming conventions für die Namen der Eigenschaften in der Final Objekt

+1

Danke, es funktioniert –

4

Verwenden Trim Methode, wird es von EF unterstützt:

//... 
.Where(postAndMeta => postAndMeta.Post.fam_v.Trim() == "Johny") 
//... 
+0

Es funktioniert wie ein Charme) –

+0

Gut zu wissen;). Ja, EF unterstützt einige String-Methoden, die in skan in kanonische Funktionen übersetzt werden. Sie finden dann in dem Link, den ich in meiner Antwort zitiert habe. – octavioccl

+0

@octavioccl - du warst vor mir mit dem 'Trim()'. Sie verdienen das Guthaben –