c# - 如何在 LINQ 和 Lambda 表达式 LINQ C# 上正确执行 SQL 查询
问题描述
你好我如何做一个 SQL 查询的 LINQ 像这样:
SELECT
c.Value as IPAddress,
cd.Number as PrintNo,
cd.TerminalNumber as TerminalNo
FROM
configuration c,
ConfigurationDevice cd
WHERE
c.DeviceID=cd.ConfigurationDeviceID
AND Parameter = 'IPAddress'
AND DeviceID IN (
SELECT
ConfigurationDeviceID
FROM
ConfigurationDevice
WHERE
[Type]=1
AND TerminalNumber > 0
)
任何人都可以显示从简单到这种 SQL 查询的 Lambda 表达式的 LINQ,其中另一个 SQL 语句声明是在 SQL 查询语句中完成的。
这也是我到目前为止所做的,但在调用结果列时我也遇到了错误。
解决方案
首先,如果您要编写 SQL,请将其编写为 ANSI SQL 而不是 Oracle SQL。ANSI SQL 得到更广泛的支持。
ANSI SQL 版本
SELECT
IPAddress as Value,
cd.Number,
cd.TerminalNumber
FROM
-- also flipped the root as it seem to make more sense to me
ConfigurationDevice cd
join configuration c on cd.ConfigurationDeviceID=c.DeviceID
WHERE
Parameter = 'IPAddress'
AND DeviceID IN (
SELECT
ConfigurationDeviceID
FROM
ConfigurationDevice
WHERE
[Type]=1
AND TerminalNumber > 0
)
您没有展示任何有关实体方面的信息。
实体
- 配置
- 配置设备
var subQuery = (
from cd in ctx.ConfigurationDevice
where
cd.Type ==1
&& cd.TerminalNumber > 0
select
cd.ConfigurationDeviceID
);//.ToList();
var query = (
from cd in ctx.ConfigurationDevice
join c in ctx.Configuration on cd.ConfigurationDeviceID equals c.DeviceID
where
c.Parameter == "IPAddress"
&& subQuery.Contains(c.DeviceID)
select new //Add a type here
{
Value = c.IPAddress,
Number = cd.Number,
TerminalNumber = cd.TerminalNumber
});
var result = query.ToList();
推荐阅读
- mysql - 无法从我的 ubuntu 服务器连接到 mysql 数据库
- python - 需要在处理中进行动画骰子滚动
- reactjs - 尝试插入脚本标记时属性 appendChild 未定义
- python-3.x - Keras 嵌入层不接受输入
- javascript - 如何使用 express-fileuploader-s3 ?(用于 Linode 中的对象存储)
- asp.net - 使用 asp.NET Core Identity 设置 DropdownList 值
- bytecode - ByteBuddy - 在注释值中传递数组时出错
- mysql - 避免尝试获取锁时发现死锁;尝试在 MariaDB (MySQL) 上重新启动事务 INSERT ON DUPLICATE KEY UPDATE
- python - 在 Python pandas 中使用正则表达式查找组合数字和字母的特定字符序列
- python - Tensorflow 2.0 如何从 Keras 模型中导出预测和训练模式