【发布时间】:2017-02-09 06:16:24
【问题描述】:
我们如何将下面的 SQL 查询转换为 linq (C#)?
SELECT o.Week,
(select sum(Positive-Negative)
FROM tbl i
where i.Week <= o.Week
)
FROM tbl o
我已经尝试过,但我不确定如何总结这些值
var result = from i in weeklySatisfaction
from o in weeklySatisfaction
where i.Week <= o.Week
select new
{
Week = o.Week,
Net = i.Positive - i.Negative
};
【问题讨论】:
-
您的原始 SQL 查询使用“相关子查询”(即直接在
SELECT子句中的另一个查询。这效率低下。您应该改用JOIN或其他方法。 -
您的原始查询似乎使用了一种非常低效的方法来计算运行总和 - SQL 中更有效的方法是使用
OVER,但是 Linq 不直接支持这一点,并且有一个在 Linq 中计算运行总和的方法非常不同,请参见此处:stackoverflow.com/questions/1834753/… -
...总之:您的 SQL 查询不能直接翻译为 Linq,这就解释了您的困难。
-
你没有提到你使用的是什么类型的 LINQ。你应该展示类模型,这样我们就可以看到实体是如何相关的。
标签: c# sql sql-server linq