2

注文数が最も多い従業員を見つけたい:このコードは、すべてのユーザーからのすべての注文数を取得します。

    public void GetBestEmployeeFromDates(DateTime fromDate, DateTime toDate)
    {
        using (NorthwindDataContext db = new NorthwindDataContext())
        {
            var query =
                from z in db.Employees
                select new
                {
                    OrderNumber = z.Orders.Where(x => x.OrderDate > fromDate.Date).Count()
                };

        }

    }

どうすればいいですか?

4

2 に答える 2

3

MaxByhttp://code.google.com/p/morelinq/ )を使用してみてください:

var maxOrders = query.MaxBy(o => o.OrderNumbers);

クエリを調整して、顧客名を含めることもできます。

var query =
            from z in db.Employees
            select new
            {   
                Customer = z.CustomerName,
                OrderNumber = z.Orders.Where(x => x.OrderDate > fromDate.Date).Count()
            };

var person = query.OrderByDescending(o => o.OrderNumber).Select(c=>c.Customer).First();

Console.WriteLine("The customer with the most orders is: " + person);
于 2013-02-17T13:08:19.260 に答える
2

私はこのようなことを考えています:

using (NorthwindDataContext db = new NorthwindDataContext())
{
 var query =
   (from z in db.Employees
   select new
   {
      OrderNumber = z.Orders.Where(x => x.OrderDate > fromDate.Date).Count(),
      Employee = z
   }).OrderByDescending(x => OrderNumber).Select(x => x.Employee).FirstOrDefault()
}
于 2013-02-17T13:18:40.050 に答える