c# - Linq-to-SQL 连接 where 子句中的两列

标签 c# asp.net linq linq-to-sql

我有一个像这样设置的表:

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");

关于c# - Linq-to-SQL 连接 where 子句中的两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10306437/

相关文章:

c# - 派生类型中的 `Activator.CreateInstance` 和 `new` 属性

c# - 枚举的描述属性给出错误

c# - 在 C# 中使用选择计数 (*)

c# - WinAPI MoveWindow 功能不适用于某些窗口

c# - 如何从应用程序级别使用 Azure 中的服务配置?

c# - 将 3 个值绑定(bind)到下拉列表

html - 字段集内联样式不起作用(IE)

linq - 无法将类型 'int?'隐式转换为 'int'

c# - LINQ to Entities 为实体的 child 的 child 返回错误的 ID

c# - 使用 LINQ 对对象列表进行分页