Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-按属性值对对象进行分组_C#_Linq - Fatal编程技术网

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 - $

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

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?我看不出模运算符在这里有什么用处。不过,我演示了如何使用它。给类a
GetGroup()
方法并按该值分组怎么样?如果分组逻辑可以按类定义,也就是说,分组范围不正确,因为它们重叠,那么$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?