gpt4 book ai didi

c# - SQL 内部选择到 LINQ

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

事情快把我逼疯了。

我认为它没有那么复杂,但我不明白。

我有这个有效的 SQL 语句,我需要它的 Linq 语句。

select 
a.id, a.date,
(select top 1 b.price from b where a.id = b.id and a.date >= b.date) as price
from a;

解释:

我有一个包含文章的表 a 和一个包含价格历史记录的表 b。

现在我需要一个数据网格,我可以在其中为表 a 输入新条目(因此 View 不起作用)并在保存后显示相关价格

我希望我能表达自己的意思

最佳答案

用于将 SQL 转换为 LINQ 查询理解:

  1. 翻译 FROM 子选择作为单独声明的变量。
  2. 翻译 LINQ 子句顺序中的每个子句,将单子(monad)运算符(DISTINCT、TOP 等)保留为应用于整个 LINQ 查询的函数。
  3. 使用表格别名作为范围变量。使用列别名作为匿名类型字段名称。
  4. 对多列使用匿名类型(新的{})
  5. Left Join 是通过使用一个 into join_variable 并在 .DefaultIfEmpty() 之后执行另一个 from from join 变量来模拟的。
  6. 用条件运算符和空测试替换 COALESCE。
  7. SELECT * 必须替换为 select range_variable 或用于连接,一个包含所有范围变量的匿名对象。
  8. SELECT 字段必须替换为 select new { ... },创建一个包含所有所需字段或表达式的匿名对象。
  9. 必须使用扩展方法处理正确的FULL OUTER JOIN

对于您的查询:

var ans = from ra in a
select new {
ra.id,
ra.date,
price = (from rb in b
where ra.id == rb.id && ra.date >= rb.date
select rb.price).First()
};

关于c# - SQL 内部选择到 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48177158/

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