0

1 日 (24) の 1 時間ごとの注文数を示すクエリを実行して印刷したいと考えています。

次のようになります:
時間-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; }

    }
4

3 に答える 3

2

クエリを次のように変更する必要があります

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 の値はすべて日付のみであるため、結果は HourTime = 0、Count = 830 になります。

グループ化を試しているだけだと思います。このように曜日ごとにグループ化してみてください

var query = db.Orders.GroupBy (o => o.OrderDate.Value.DayOfWeek).Select (
    g => new { DayOfWeek=g.Key, Count=g.Count () });

これにより、より有用な結果が得られます。

于 2013-02-17T15:57:46.077 に答える
1

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);
}
于 2013-02-17T15:57:33.250 に答える
1

これを試して:

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);
        }
    }
}
于 2013-02-17T15:58:13.920 に答える