Sql server 如何在LINQ中执行此SQL
早上好,我想知道如何在LINQ中使用(MS)SQLSql server 如何在LINQ中执行此SQL,sql-server,linq,Sql Server,Linq,早上好,我想知道如何在LINQ中使用(MS)SQL SELECT CONVERT(CHAR(10),orderDate,110) AS OrderDate, SUM(1) AS TotalOrders FROM Orders WHERE OrderDate>getdate()-30 GROUP BY CONVERT(CHAR(10),orderDate,110) ORDER BY OrderDate DESC 非常感谢 更新 我结束了使用和编辑下面提供的解决方案的版本,
SELECT CONVERT(CHAR(10),orderDate,110) AS OrderDate,
SUM(1) AS TotalOrders
FROM Orders
WHERE OrderDate>getdate()-30
GROUP BY CONVERT(CHAR(10),orderDate,110)
ORDER BY OrderDate DESC
非常感谢
更新
我结束了使用和编辑下面提供的解决方案的版本,我想我会分享它
using (DataDataContext dc = new DataDataContext())
{
var query = from o in dc.Orders
where o.orderDate > DateTime.Now.AddDays(-30)
let dt = o.orderDate
group o by new DateTime(dt.Year, dt.Month, dt.Day) into g
select new OrderCounts
{
OrderDate = String.Format("{0:d}", g.Key.Date),
TotalOrders = g.Count()
};
query.GroupBy(o => o.OrderDate);
query.OrderBy(o => o.OrderDate);
return query.ToList();
}
查询将被删除
var query = from o in res
where o.OrderDate > DateTime.Now.AddDays(-30)
orderby o.OrderDate descending
group o by o.OrderDate into g
select new
{
OrderDate = g.Key.Date.ToString("MM/dd/yyyy")
,
TotalOrders = g.Sum(i=> 1)
};
或者通过Lambda表达式
var query= res
.Where(i => i.OrderDate > DateTime.Now.AddDays(-30))
.OrderByDescending(o => o.OrderDate)
.GroupBy(g => g.OrderDate)
.Select(s => new { OrderDate = s.Key.Date.ToString("MM/dd/yyyy"), TotalOrders = s.Sum(i => 1) });
g、 Sum(1)似乎不想工作?错误45“System.Linq.IGrouping”不包含“Sum”的定义和最佳扩展方法重载“System.Linq.Enumerable.Sum(System.Collections.Generic.IEnumerable,System.Func)”有一些无效的参数。请注意,所有日期都是按顺序排列的,而不是按顺序分组的,有什么想法吗?Sum(1)不只是进行计数吗?为什么要使用sum(1)当有一个非常好的(可能更适合)选项可用时?我尝试了你的代码,它也带回了过去30天的所有订单,并且没有按日期分组-顺便说一句,我有一个datetime字段。
var query= res
.Where(i => i.OrderDate > DateTime.Now.AddDays(-30))
.OrderByDescending(o => o.OrderDate)
.GroupBy(g => g.OrderDate)
.Select(s => new { OrderDate = s.Key.Date.ToString("MM/dd/yyyy"), TotalOrders = s.Sum(i => 1) });