C# 查询以获取每个小时内的所有操作
我想运行并打印一个查询,显示一天中每小时的订单数(24) 应该是这样的:C# 查询以获取每个小时内的所有操作,c#,sql,linq,C#,Sql,Linq,我想运行并打印一个查询,显示一天中每小时的订单数(24) 应该是这样的: 小时-1:00,订单数量-5 小时-2:00,订单数量-45 小时-3:00,订单数量-25 小时-4:00,订单数量-3 小时-5:00,订单数量-43 等等 我尝试: public void ShowBestHours() { using (NorthwindDataContext db = new NorthwindDataContext()) {
小时-1:00,订单数量-5
小时-2:00,订单数量-45
小时-3:00,订单数量-25
小时-4:00,订单数量-3
小时-5:00,订单数量-43
等等 我尝试:
public void ShowBestHours()
{
using (NorthwindDataContext db = new NorthwindDataContext())
{
var query =
from z in db.Orders
select new Stime
{
HourTime = db.Orders.GroupBy(x => x.OrderDate.Value.Hour).Count(),
};
foreach (var item in query)
{
Console.WriteLine("Hour : {0},Order(s) Number : {1}", item.HourTime, item.Count);
}
}
}
public class Stime
{
public int HourTime { get; set; }
public int Count { get; set; }
}
您没有在查询中的任何位置设置
Stime.Count
,也没有按小时正确分组。当然,我还没有看到您的具体设置,但我认为以下内容应该适合您
var query =
from z in db.Orders
group z by z.OrderDate.Value.Hour into g
select new Stime() { HourTime = g.Key, Count = g.Count() };
foreach (var item in query)
{
Console.WriteLine("Hour : {0},Order(s) Number : {1}", item.HourTime, item.Count);
}
您没有在查询中的任何位置设置
Stime.Count
,也没有按小时正确分组。当然,我还没有看到您的具体设置,但我认为以下内容应该适合您
var query =
from z in db.Orders
group z by z.OrderDate.Value.Hour into g
select new Stime() { HourTime = g.Key, Count = g.Count() };
foreach (var item in query)
{
Console.WriteLine("Hour : {0},Order(s) Number : {1}", item.HourTime, item.Count);
}
您需要将查询更改为
var query =
from z in db.Orders
group z by z.OrderDate.Value.Hour into g
select new Stime{ HourTime = g.Key, Count=g.Count () };
或者
var query = db,Orders.GroupBy (o => o.OrderDate.Value.Hour).Select (
g => new Stime{ HourTime=g.Key, Count=g.Count () });
在我的Northwind副本中,所有OrderDate值都是日期,因此结果仅为
小时时间=0,计数=830
我想你只是在尝试分组。试着像这样按星期几分组
var query = db.Orders.GroupBy (o => o.OrderDate.Value.DayOfWeek).Select (
g => new { DayOfWeek=g.Key, Count=g.Count () });
这将提供更有用的结果。您需要将查询更改为
var query =
from z in db.Orders
group z by z.OrderDate.Value.Hour into g
select new Stime{ HourTime = g.Key, Count=g.Count () };
或者
var query = db,Orders.GroupBy (o => o.OrderDate.Value.Hour).Select (
g => new Stime{ HourTime=g.Key, Count=g.Count () });
在我的Northwind副本中,所有OrderDate值都是日期,因此结果仅为
小时时间=0,计数=830
我想你只是在尝试分组。试着像这样按星期几分组
var query = db.Orders.GroupBy (o => o.OrderDate.Value.DayOfWeek).Select (
g => new { DayOfWeek=g.Key, Count=g.Count () });
这将提供更有用的结果。尝试以下方法:
public void ShowBestHours()
{
using (NorthwindDataContext db = new NorthwindDataContext())
{
var query = db.Orders.GroupBy(x => x.OrderDate.Value.Hour).OrderByDescending(x => x.Count()).Select(x => new Stime { HourTime = x.Key, Count = x.Count() });
foreach (var item in query)
{
Console.WriteLine("Hour : {0},Order(s) Number : {1}", item.HourTime, item.Count);
}
}
}
试试这个:
public void ShowBestHours()
{
using (NorthwindDataContext db = new NorthwindDataContext())
{
var query = db.Orders.GroupBy(x => x.OrderDate.Value.Hour).OrderByDescending(x => x.Count()).Select(x => new Stime { HourTime = x.Key, Count = x.Count() });
foreach (var item in query)
{
Console.WriteLine("Hour : {0},Order(s) Number : {1}", item.HourTime, item.Count);
}
}
}
当你尝试时会发生什么?小时数:1,订单号:0小时数:1,订单号:0小时数:1,订单号:0等等很多次…(我想订单的数量)当你尝试时会发生什么?小时数:1,订单号:0小时数:1,订单号:0小时数:1,订单号:0等等很多次…(我想订单的数量)