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)
oderchar(n)
? Wenn Siechar(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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nicht sprechen Englisch. Versuchen Sie dies:
Unter der Annahme, dass
value
keine Zeichenfolge ist, könnte man verketten möchte:Den Vorteil
string.Concat
ist, dass alle Argumente werden in eine Zeichenfolge konvertiert werden.Versuchen, diese zu wählen
und Aussehen werden Sie haben "ABC1234"