2

我需要计算订单列表中唯一商品的数量。

我有一个订单列表,每个订单都有一个项目列表。

public class Order
{
   public int orderID;
   public List<items> itemList;
}

public class Item
{
   public int itemID;
   public int itemQuantity;
   public String itemDescription;
}

我的最终目标是一个唯一项目列表(基于 itemID 或 itemDescription)以及每个唯一项目的总数。

到目前为止,我有以下内容,但我不确定下一步该怎么做:

var x = from order in orders
from items in order.OrderItems
group // I know I need to group them here
select new { // I have to count in here };

我需要结果看起来像这样:

  • ID:Item_01,计数:15
  • ID:Item_02,计数:3
  • ID:Item_03,计数:6

对此的任何帮助或指导都会很棒。谢谢。

4

2 回答 2

2

这将使用 ItemID 和 ItemDescription 值进行总结:

var x = from order in orders
            from item in order.OrderItems
            group item by new { ItemID = item.itemID, ItemDescription = item.itemDescription } into g
            select new { ItemID = g.Key.ItemID, ItemDescription = g.Key.ItemDescription, Count = g.Sum(o => o.itemQuantity) };
于 2013-08-12T19:12:00.390 回答
1
Orders.SelectMany(x => x.itemList)
        .GroupBy(x => x.itemID)
        .Select(x => new { itemID = x.Key, Count = x.Count() })
        .ToList()
于 2013-08-12T19:52:26.107 回答