c# - 在 C# 中将 SQL 转换为 LINQ
问题描述
我无法将下面提到的查询写入 Linq。
SELECT
dateentered,
sum(Advance) AS amount,
CAST(100 * sum(sum(Advance)) OVER (ORDER BY dateentered)
/ sum(sum(Advance)) OVER () AS numeric(10, 2)) AS percentage
FROM Portfolio WHERE [Date Funded]>='12/1/2015' and [Date Funded]<='11/30/2020'
GROUP BY dateentered
我能够在 SQL 中执行,但无法转换为 linq。更多我使用 linqer 进行转换,但它也无法正常工作。
解决方案
SQL 语言是有限的,通常你必须使用 kludges 来获得所需的结果。c# 是一种更加健壮的语言。这是我的查询模型
class Program
{
static void Main(string[] args)
{
Context db = new Context();
var results = db.Portfolio.Where(x => (x.Date_Funded.Date >= DateTime.Parse("12/1/2015")) && (x.Date_Funded.Date <= DateTime.Parse("11/39/2020")))
.OrderBy(x => x.dateentered)
.GroupBy(x => x.dateentered.Date)
.Select(x => new { dateentered = x.Key, sum = x.Sum(y => y.Advance) })
.Select(x => new
{
dateentered = x.dateentered,
amount = x.sum,
percentage = Math.Round((100 * x.sum), 2)
}).ToList();
}
}
public class Context
{
public List<Portfolio> Portfolio { get; set; }
}
public class Portfolio
{
public DateTime dateentered { get; set; }
public decimal Advance { get; set; }
public DateTime Date_Funded { get; set; }
}
推荐阅读
- javascript - 图表专家:y 轴标签位置错误
- hibernate - 如何在休眠框架中管理来自两个实体的多对多关系?
- javascript - 不确定如何使此选项元素返回月份范围(*ngFor 角度等效于反应)
- kubernetes - 用作 Sidecar 时,SQL Cloud Proxy 不断重启连接
- ios - 从 ejabberd 服务器检索 XMPP 存档消息的问题(聊天记录)
- python - TKinter 使用 TOPLEVEL 模态对话从其他类调用一个类
- android - 如何从无人机相机流中获取位图数据。安卓应用
- dc.js - dc.js rowChart:当所有值都为 0 时,阻止 yAxis 出现在图表中心
- python - 由于数据类型错误,无法从时间数据中减去小时数
- java - 即使代码正确,我的 junit 测试仍然失败