【问题标题】:How to group in three groups with LINQ for c# [closed]如何使用 LINQ for c# 分为三组 [关闭]
【发布时间】:2023-03-19 06:16:01
【问题描述】:

我有具有属性 Price 的“发票”对象。 这是我的数据:

Invoice[] arrayOfInvoices = new Invoice[] {     
                new Invoice(83,"Electric Sander",7,57.98m)
            ,   new Invoice(24,"Power Saw",18,99.99m)
            ,   new Invoice(7,"Sledge hammer",11,21.50m)
            ,   new Invoice(77,"Hammer", 76, 11.99m)
            ,   new Invoice(39,"Lawn mower", 3, 79.50m)
            ,   new Invoice(68,"Screwdriver", 106, 6.99m)
            ,   new Invoice(56,"Jig saw", 21, 11.00m)
            ,   new Invoice(3,"Wrench", 34, 7.50m)};

我正在尝试将发票分为三组 - 单价低于 10 的发票,单价发票 在 10 到 20 之间以及单价高于 20 的发票。你知道我该怎么做吗?

【问题讨论】:

  • 当然,将逗号放在行尾会更容易..

标签: c# linq filter group-by


【解决方案1】:

我只想使用条件运算符来创建类似 switch 的语句:

arrayOfInvoices.GroupBy(i => i.Price < 10 ? 0 :
                             i.Price < 20 ? 1 :
                             /*else*/       2)

要在组内订购,只需在开始分组之前执行OrderBy

arrayOfInvoices.OrderBy(i => i.Price)
               .GroupBy(i => i.Price < 10 ? 0 :
                             i.Price < 20 ? 1 :
                             /*else*/       2)

【讨论】:

  • 如果我必须向结果组添加降序或升序,我该怎么做?
  • 按什么排序?价格?
  • 是的,完全按照价格。
  • @user2128702 已添加到我的答案中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多