4

注文を顧客 ID でグループ化し、(顧客から) 返された注文をリストに投影しようとしています。私がこれを行う方法を理解しようとしていますか?

 List<OrderGroup> set = OrderRepository.GetAllOrders
     .GroupBy(x => x.CustomerId).Select(result => new OrderGroup
         {
             Orders = ???? //should be all orders from one customer.
         }).ToList();
4

3 に答える 3

4

resultでありIGrouping<TKey, T>、それ自体が であるIEnumerable<T>ため、次のことができます。

List<OrderGroup> set = OrderRepository.GetAllOrders
                      .GroupBy(x => x.CustomerId)
                      .Select(result => new OrderGroup
                      {
                          Orders = result.ToList()
                      }).ToList();

Orders(これはから割り当て可能であると仮定していることに注意してくださいList<Order>。)

于 2012-08-20T21:18:51.363 に答える
2

私は以下のようなことをします。すべてを取得するのではなく、必要な列を選択するのが好きです。

var customerData = (from cd in OrderRepository.GetAllOrders
                     group cd by new { cd.CustomerId, cd.date } into grp
                    select new
                       {
                           customer_name = grp.FirstOrDefault().custname,
                           total_orders = grp.Count(),  
                           amount = grp.Sum(x => x.total_amt_paid)

                       }).ToList();                    


foreach (var data in customerData)
{

}
于 2012-08-20T22:43:26.423 に答える