首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用linq将集合中的项合并在一起

使用linq将集合中的项合并在一起
EN

Stack Overflow用户
提问于 2014-04-30 13:59:46
回答 2查看 4.2K关注 0票数 2

我有一个对象列表(称为salesItems类型),假设这些项目有50个属性,名称、价格、数量是其中的3个)。我想知道如何使用以下逻辑将列表合并在一起,并使用名称组合任何salesItems:

如果有多个名称相同的salesOrders:

  • 将它们组合成一个具有相同名称的SalesOrder
  • 将数量设置为数量之和。
  • 的值设置价格和所有其他属性。

我想和linq谈谈。我意识到我可以为每个c#循环使用一个大的。

如果清单中还有其他项目,我也想对这些项目遵循类似的逻辑。

代码语言:javascript
运行
复制
EX:    A salesOrder list with (A,B,C,D,E)

A: Name=ball  Price= 2.24  Quantity=1   (other values = bla bla)
B: Name= ball  Price = 15.33  Quantity=3   (other values)
c: Name= bat  Price = 22.14  Quantity=3    (other values)
D: Name= bat Price= 19.22 Quantity=2    (other values)
E: Name = ball Price=4.32 Quantity=2   (other values)

我想要两个销售订单(A,C) A: Name=ball Price= 2.24 Quantity=6 (其他值= bla bla来自a的属性) c: Name= bat Price = 22.14 Quantity=5 (c属性的其他值)

EN

Stack Overflow用户

发布于 2014-04-30 14:28:44

嗨,你可以使用下面的代码,

代码语言:javascript
运行
复制
class SalesItem
{
    public string Name { get; set; }
    public int Price { get; set; }
    public int Quantity { get; set; }
}

class SalesOrder
{
    public void LoadItems()
    {
        List<SalesItem> SalesItems = new List<SalesItem>();

        SalesItem salesitem = new SalesItem()
        {
            Name = "Ball",
            Price = 12,
            Quantity = 1
        };

        SalesItems.Add(salesitem);

        salesitem = new SalesItem()
        {
            Name = "Ball",
            Price = 36,
            Quantity = 3
        };

        SalesItems.Add(salesitem);

        salesitem = new SalesItem()
        {
            Name = "Bat",
            Price = 50,
            Quantity = 1
        };

        SalesItems.Add(salesitem);

        salesitem = new SalesItem()
        {
            Name = "Ball",
            Price = 84,
            Quantity = 7            
        };

        SalesItems.Add(salesitem);

        salesitem = new SalesItem()
        {
            Name = "Bat",
            Price = 150,
            Quantity = 3
        };

        SalesItems.Add(salesitem);

        GroupOrders(SalesItems);
    }

    public List<SalesItem> GroupOrders(List<SalesItem> SalesItems)
    {
        var list = from item in SalesItems
                   group item by item.Name into orders
                   select new SalesItem
                   {
                       Name = orders.Key,
                       Price = orders.Sum(X=>X.Price),
                       Quantity = orders.Sum(X=>X.Quantity)
                   };

        List<SalesItem> resultList = new List<SalesItem>();
        foreach (SalesItem saleitem in list)
        {
            resultList.Add(saleitem);
        }
        return resultList;
    }
}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23390191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档