gpt4 book ai didi

c# - 将 Linq 代码块转换为 SQL

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:34 25 4
gpt4 key购买 nike

主要目标是将适当的数据从一个表迁移到另一个表,由于我的 sql 技能不高,所以我使用 linq 和 foreach 语句编写逻辑来完成所需的操作。但是,在不同的环境下运行需要一个sql脚本,所以我开始将我以前写的东西翻译成sql,结果我的sql思维过程在GroupBy和循环海岸被打破了。

这是我的尝试,实际上返回了准确的数据结果:

SELECT BookID FROM (SELECT bt.BookID, pt.PaperID, ppt.PropID
FROM BooksTable AS bt
JOIN PapersTable AS pt
ON bt.BookID = pt.BookID
JOIN PapersPropertiesTable AS ppt
ON pt.PaperID = ppt.PaperID) AS ResultSet
GROUP BY BookID

这是我遇到困难的代码:

foreach (var i in ResultSetGroupedByBookID)
{
var resultToMigrate= i.DistinctBy(j => j.PropID).ToList();

foreach (var j in resultToMigrate)
{
db.InsertPropsProcedure(j.BookID, j.PropID);
}
}

主要挑战:

  • GroupingBy 返回包含其他列的内部结果集
  • 遍历内部结果集,DistinctBy PropID 并返回另一个结果集
  • 循环遍历新集合,调用插入过程并传递参数

更新:

我选择了 Stepen 的回答是因为它很简单;但是,我遇到了需要在返回第三个列的同时按多个列区分的情况,因此我必须执行以下操作 modifications :

INSERT INTO Table2(BookID, PropID, PropValue)
SELECT DISTINCT bt.BookID, ppt.PropID, MAX(ppt.PropValue) AS PropValue
FROM BooksTable AS bt
JOIN PapersTable AS pt ON bt.BookID = pt.BookID
JOIN PapersPropertiesTable AS ppt ON pt.PaperID = ppt.PaperID
GROUP BY bt.BookID, ppt.PropertyID
ORDER BY bt.BookID

最佳答案

如果您了解 SQL 并想将其转换为 LINQ或者,如果您了解 LINQ 并想将其转换为 SQL

最好的工具是 LinqPad

关于c# - 将 Linq 代码块转换为 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46855539/

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