我有一个像这样设置的表:
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;
答案 0 :(得分:4)
我不会说英语。试试这个:
var selected = dc.Where(x => x.prefix + x.value == "ABC1234");
答案 1 :(得分:2)
假设value
不是字符串,您可以将它们连接起来:
var selected = dc.Items.Where(x => string.Concat(x.prefix, x.value) == "ABC1234");
使用string.Concat
的好处是所有参数都将转换为字符串。
答案 2 :(得分:0)
where (i.prefix + i.value) == "ABC1234"
答案 3 :(得分:0)
尝试选择此
selected =
from c in db.items
select new {
Name = string.Format("{0}{1}", c.prefix , c.value)
};
看看你有“ABC1234”