Linq-to-SQL verketten Sie zwei Spalten in der where-Klausel

Ich habe eine Tabelle einrichten, in etwa so:

prefix | value
 ABC     1234
 ABC     5678
 DEF     1234

Ist es möglich, erstellen Sie eine linq-Abfrage, wo das Präfix und Wert verkettet werden für den Vergleich in der where-Klausel? Ich hab das versucht, aber es gibt immer eine leere Menge:

selected =
            from i in dc.items
            where i.prefix + i.value == "ABC1234"
            select i;

Edit: das folgende T-SQL-kommt mit die richtigen Ergebnisse:

 WHERE LTRIM(RTRIM([prefix])) + LTRIM(RTRIM([value])) = 'ABC1234'

Edit2: Die folgenden, die vereint die meisten der Antworten unten immer noch nicht funktioniert:

where (String.Concat(i.prefix.Trim(), i.value.Trim())) == "ABC1234"

Edit3: So, ich habe es zu arbeiten, aber ich habe keine Ahnung, warum. Da ich angenommen habe, eine Antwort aber wenn jemand Beiträge, warum es funktioniert, wäre ich dankbar 🙂

Das funktioniert (gibt n Zeilen):

var temp = dc.items.Where(i => i.prefix.Trim() + i.prefix.Trim() == "ABC1234");

Dies nicht funktioniert (liefert 0 Zeilen):

var temp =
            from i in dc.items
            where i.prefix.Trim() + i.value.Trim() == "ABC1234"
            select i;
  • Ich denke, dass sollte funktionieren. Gibt es Räume, in die Werte (so dass die Verkettung richtig == "ABC 1234")?
  • Was sind die Datentypen Präfix und Wert sind, sind die varchar(n) oder char(n)? Wenn Sie char(n) Sie enthalten Polsterung Räume.
  • Doh Sie sind char(n). Ich Hinzugefügt .Trim() auf beide, das hat nicht geholfen aber.
  • Wenn Sie sagen, es funktioniert nicht, was ist die Ausgabe des unteren Beispiel?
  • Können Sie Profil das Letzte Beispiel und posten, oder zumindest überprüfen Sie die SQL generiert?
InformationsquelleAutor carpat | 2012-04-24
Schreibe einen Kommentar