C# - 按属性值分组对象

时间:2017-04-11 18:12:43

标签: c# linq

我有一个用C#编写的控制台应用程序。在我的应用程序中,我有一个像这样定义的对象:

public class Order
{
  public double Price { get; set; }

  public string Description { get; set; }

  public int ItemCount { get; set; }
}

我在Order中有List<Order>个对象。我需要按照他们的价格对这些订单进行分组。但是,这些群体代表了价格范围。例如,我想要以下组:

$0 - $10
$10 - $20
$20 - $30
$30 - $40
$40 - $50
$50 - $60
$60 - $70
$70 - $80
$80 - $90
$90 - $100

最初,我只是绕过List<Order>,但看起来很笨重。我觉得这对Linq来说是一个很好的例子,但我已经做到了。我的方法不起作用。

有没有办法根据LINQ的Price属性将订单分组为10美元增量?

2 个答案:

答案 0 :(得分:4)

使用整数运算和GroupBy,例如:

public class Search { public static boolean filterByNumber(Part part, int number) { if (part.getClass() == Inhouse.class) { Inhouse testIn = (Inhouse) part ; if (testIn.getMachineID() == number) { return true ; } } if((number == part.getPartID()) || (number == part.getInstock()) || (number == part.getMax()) || ( number == part.getMin()) || ((double) number == part.getPrice()) || (Integer.toString(number).contains(part.getName()))){ return true ; } return false ; } public static boolean filterByText(Part part, String text) { //similarly... } }

答案 1 :(得分:4)

这应该有效:var groups = orders.GroupBy(order => order.Price - order.Price % 10);