C#-按属性值对对象进行分组
我有一个用C#编写的控制台应用程序。在我的应用程序中,我有一个如下定义的对象:C#-按属性值对对象进行分组,c#,linq,C#,Linq,我有一个用C#编写的控制台应用程序。在我的应用程序中,我有一个如下定义的对象: public class Order { public double Price { get; set; } public string Description { get; set; } public int ItemCount { get; set; } } 我在列表中有顺序对象。我需要按价格对这些订单进行分组。但是,这些组代表一个价格范围。例如,我需要以下组: $0 - $10 $10 - $
public class Order
{
public double Price { get; set; }
public string Description { get; set; }
public int ItemCount { get; set; }
}
我在列表中有顺序
对象。我需要按价格对这些订单进行分组。但是,这些组代表一个价格范围。例如,我需要以下组:
$0 - $10
$10 - $20
$20 - $30
$30 - $40
$40 - $50
$50 - $60
$60 - $70
$70 - $80
$80 - $90
$90 - $100
起初,我只是想循环浏览列表
,但它似乎很笨重。我觉得这对林克来说是个很好的例子,但我还是做得不够。我的方法行不通
是否有一种方法可以根据LINQ的价格属性将订单分组为10美元增量?使用整数算术和GroupBy,例如:
orders.GroupBy(o=>(int)o.Price/10)
这应该有效:var groups=orders.GroupBy(order=>order.Price-order.Price%10)
C#有一个%
模运算符。@AsadSaeeduddin-so?我看不出模运算符在这里有什么用处。不过,我演示了如何使用它。给类aGetGroup()
方法并按该值分组怎么样?如果分组逻辑可以按类定义,也就是说,分组范围不正确,因为它们重叠,那么$10在0-10或10-20中的位置是什么,您需要创建独占范围取决于双倍运算的特性,以及GroupBy
做。等于(
comparison使其成为组,我会仔细考虑这个答案。当处理较大的数字时,您可能会得到分配给它们的一小部分的组。嗯,我运行了一些测试,我无法让它在0
和Int32.MaxValue
之间的任何数字上失败。我还尝试了Int64.MaxValue
,Int64.MaxValue-1
,Double.MaxValue
,和Double.MaxValue-1.2
,这些都没有失败。我认为对于最合理的使用,这种方法是可以的。为什么$10属于0-10而不是10-20?