C# 在c中将SQL转换为LINQ

C# 在c中将SQL转换为LINQ,c#,sql-server,linq,entity-framework-core,C#,Sql Server,Linq,Entity Framework Core,我无法将下面提到的查询写入Linq 选择 输入日期, 将预付款作为金额, CAST100*SUMSUM按输入日期预支订单 /以数字10表示的预付款总额,以百分比表示的预付款总额 从[Date Finaned]>='12/1/2015'和[Date Finaned]的投资组合中,SQL语言是有限的,通常您必须使用kludges来获得所需的结果。c是一种更健壮的语言。这是我的查询模型 class Program { static void Main(string[]

我无法将下面提到的查询写入Linq

选择 输入日期, 将预付款作为金额, CAST100*SUMSUM按输入日期预支订单 /以数字10表示的预付款总额,以百分比表示的预付款总额
从[Date Finaned]>='12/1/2015'和[Date Finaned]的投资组合中,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; }

    }

您是否尝试过在linq中键入此查询?如果您已经尝试过,请与我们分享,您在哪里遇到了问题,确切地说,您不能做什么。这看起来很难帮助您,尽管如果我们是您,这可能很容易。并非SQL中的所有内容都具有LINQ等效项。这就是一个例子。通常情况下,使用原始SQL比试图欺骗LINQ构建精确的查询要好。您拥有完美的SQL。EF Core有API来执行这样的SQL。没有翻译是必要的,甚至是不可取的。有时候,正确的答案是什么?简单地说就是:这不考虑窗户的上方function@Charlieface:原版也可以对OVER进行任何处理。我认为最初的SQL并没有按照OP希望的方式工作。我只是尽我所能翻译了原始SQL。DateTime.Parse12/1/2015作为一般规则,我鼓励使用DateTime构造函数或使用ParseExact,以及将该逻辑移到LINQ查询之外,即,将其放在前面。不确定您是否正确,他在订单上按日期输入了100*SumSumAdvance/SumSumAdvance,如果我没有弄错,将给出sumadvanceSQL语言的运行百分比是有限的-为什么?很有表现力。它在一个声明性语句中执行的操作需要整个命令式C代码块。OP甚至不应该想把它转换成LINQ。顺便说一下,SQL语句是正确的,而您的代码不是。