我正在寻找一些帮助,将以下 sql 查询转换为 C# 中的 LINQ to entities。
SELECT f.FundId, u.UnitValue
FROM Fund f
INNER JOIN FundUnit u ON f.FundId= u.FundId
WHERE u.EffectiveDate = (SELECT MAX(effectivedate)
FROM FundUnit k
WHERE u.FundId = k.FundId)
AND f.Active = 1
ORDER BY f.FundId
查询读取数据库中的所有活跃基金及其最新单位值(value)。 Fund 表,其中包含每个基金的记录。 FundUnit 表包含每个基金每个日期的单位值(value)记录。以前日期的单位值也保留在表中以维护历史记录。
并非所有基金每天都会收到新的单位值(value),因此所有基金的最新生效日期不一定相同。因此,需要将 max(effectivedate) 函数应用于每个基金需要应用的单位表 - 因此需要相关子查询。
谢谢
最佳答案
为了回答这个问题,我将不得不假设您的实体名称。
SELECT f.FundId, u.UnitValue FROM Fund f INNER JOIN FundUnit u ON f.FundId= u.FundId WHERE u.EffectiveDate = (SELECT MAX(effectivedate) FROM FundUnit k WHERE u.FundId = k.FundId) AND f.Active = 1 ORDER BY f.FundId
我假设有一个 Fund 实体和一个 FundUnit 实体,就像示例一样。
var query = from f in Fund
from u in FundUnit
where f.FundId == u.FundId
&& u.EffectiveDate == (from k in FundUnit
where u.FundId = k.FundId
select EffectiveDate).Max()
&& f.Active == 1
select new { Id = f.FundId, EffectiveDate = u.EffectiveDate } // Add any fields you need
order by f.FundId
这都是我凭内存做的,没有测试过,可能会有一些小问题。如果我有时间,我会测试它。
关于c# - 在 C# 中将 SQL 查询(带有相关子查询)转换为 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4248193/