簡體   English   中英

Linq-to-SQL在where子句中連接兩列

[英]Linq-to-SQL concatenate two columns in where clause

我有一個這樣的表:

prefix | value
 ABC     1234
 ABC     5678
 DEF     1234

是否可以創建一個linq查詢,其中將前綴和值連接在一起,以便在where子句中進行比較? 我已經嘗試過了,但是它總是返回一個空集:

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

編輯:以下T-SQL給出了正確的結果:

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

Edit2:結合了以下大多數答案的以下內容仍然無效:

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

Edit3:所以我已經開始工作了,但是我不知道為什么。 我已經接受了答案,但是如果有人發布了它的工作原理,我將不勝感激:)

這有效(返回n行):

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

這不起作用(返回0行):

var temp =
            from i in dc.items
            where i.prefix.Trim() + i.value.Trim() == "ABC1234"
            select i;

我不會說英語。 嘗試這個:

var selected = dc.Where(x => x.prefix + x.value == "ABC1234");

假設value不是字符串,則可以這樣將它們連接起來:

var selected = dc.Items.Where(x => string.Concat(x.prefix, x.value) == "ABC1234");

使用string.Concat的好處是所有參數都將轉換為字符串。

where (i.prefix + i.value) == "ABC1234"

嘗試選擇這個

selected =
 from c in db.items

 select new {

 Name = string.Format("{0}{1}", c.prefix , c.value)

};

看看你有“ ABC1234”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM