Sql server 如何在LINQ中执行此SQL

Sql 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 非常感谢 更新 我结束了使用和编辑下面提供的解决方案的版本,

早上好,我想知道如何在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
非常感谢

更新 我结束了使用和编辑下面提供的解决方案的版本,我想我会分享它

 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) });