【发布时间】:2021-09-22 12:44:16
【问题描述】:
你好,我如何像这样对 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 查询语句中完成的。
这也是我到目前为止所做的,但我在调用结果列时也出错了。
【问题讨论】:
-
如果您将 LINQ 与 SQL 数据库一起使用,而不是使用从 c# 代码到数据库的实体连接。看起来您正在尝试将 LINQ 与无法工作的 SQLConnection 一起使用。您可以使用 SQLAdapter 并将查询结果放入 DataTable 中,然后在 DataTable 上使用 Linq。
-
所以您希望我们将您的 sql 语句翻译成 linq 查询?=!
IN运算符的 linq 等效项是Contains方法。AND是&&。 select 子句排在最后。这应该会有所帮助 -
它是另一个查询中的查询,我不熟悉 LinQ,这是我的问题的关键部分,我也想了解如何。
-
嵌套查询没有魔法。使用 where 过滤第二个集合,在最后进行选择并检查 contains。:
firstCollection.Where( x => secondColelction.Where(...).Select(s => s.ConfigurationDeviceID).Contains(x.DeviceId)).Select(x => x).ToList()