gpt4 book ai didi

LinqPad - 将 SQL 转换为 Linq 命令

转载 作者:行者123 更新时间:2023-12-03 21:00:53 24 4
gpt4 key购买 nike

我最近购买了 LINQPad,希望它能让我将 SQL 语句转换为 LINQ 语句。

使用 LINQPad,我能够附加一个数据库并运行返回我需要的结果的 SQL 语句。

但是我找不到将该 SQL 语句转换为 LINQ 的“命令”。

您能否让我知道如何使用 LINQPad 或其他工具将 SQL 转换为 LINQ?

最佳答案

有一个工具叫Linqer ,但要小心:从 SQL 音译到 LINQ 会给你 worst of both worlds .

例如,假设您希望所有 1000 美元或以上的购买以现金或由居住在华盛顿的客户支付。这是 SQL 中的查询:

SELECT p.*
FROM Purchase p
LEFT OUTER JOIN
Customer c INNER JOIN Address a ON c.AddressID = a.ID
ON p.CustomerID = c.ID
WHERE
(a.State = 'WA' || p.CustomerID IS NULL)
AND p.ID in
(
SELECT PurchaseID FROM PurchaseItem
GROUP BY PurchaseID HAVING SUM (SaleAmount) > 1000
)

如何将其转换为 LINQ?错误的方法是将查询音译为 LINQ,试图重现外连接和内连接、子查询和组子句。正确的方法是将原始查询(英文)直接映射到 LINQ,利用 LINQ 的线性数据流和关联属性:

我要所有采购...
from p in db.Purchases

... 1000 美元或更多...
where p.PurchaseItems.Sum (pi => pi.SaleAmount) > 1000

...以现金支付...
where p.Customer == null

...或居住在华盛顿的客户
|| p.Customer.Address.State == "WA"

这是最后的查询:
from p in db.Purchases
where p.PurchaseItems.Sum (pi => pi.SaleAmount) > 1000
where p.Customer == null || p.Customer.Address.State == "WA"
select p

更多信息 here .

关于LinqPad - 将 SQL 转换为 Linq 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12238423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com