C# 在c中将SQL转换为LINQ
我无法将下面提到的查询写入Linq 选择 输入日期, 将预付款作为金额, CAST100*SUMSUM按输入日期预支订单 /以数字10表示的预付款总额,以百分比表示的预付款总额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[]
从[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语句是正确的,而您的代码不是。