【发布时间】:2013-07-03 15:09:54
【问题描述】:
我有一个可观察的 Auctions 集合,它的 Auction 类型看起来像
public class Auction
{
public int GroupId {get; set;}
public DateTime Date {get; set;}
public string Hour {get; set;}
public decimal Offer {get; set;}
public decimal Bid {get; set;}
public decimal OfferPrice {get; set;}
public decimal BidPrice {get; set;}
}
该集合包含以下数据,
Group Id Date Hour Offer Bid Offer Price Bid Price
1 27/06/2013 00:00 5.556 86.3 250 0
1 27/06/2013 00:15 0 0 250 0
1 27/06/2013 00:30 0 0 250 0
1 27/06/2013 00:45 0 0 250 0
1 27/06/2013 01:00 0 0 250 0
1 27/06/2013 01:15 5.556 86.3 250 0
2 27/06/2013 01:30 8.68 19.9 100 20
2 27/06/2013 01:45 0 0 100 20
2 27/06/2013 02:00 8.68 19.9 100 20
2 27/06/2013 02:15 0 0 100 20
2 27/06/2013 02:30 8.68 19.9 100 20
2 27/06/2013 02:45 0 0 100 20
2 27/06/2013 03:00 8.68 19.9 100 20
3 27/06/2013 03:15 87.14 87.1 150 0
3 27/06/2013 03:30 0 0 150 0
3 27/06/2013 03:45 0 0 150 0
3 27/06/2013 04:00 0 0 150 0
3 27/06/2013 04:15 0 0 150 0
3 27/06/2013 04:30 0 0 150 0
3 27/06/2013 04:45 0 0 150 0
3 27/06/2013 05:00 0 0 150 0
现在我要做的是,
- 按 GroupId 分组集合,所以我得到 3 个块,其中一个 GroupId = 1、GroupId =2 和 GroupId = 3。
- 然后我需要将不在第 1 组中的所有内容设置为零并将其添加到第 1 组。
例子,
- 绿色组 1 中的所有内容都按原样复制,然后将组 1 附加其余数据但设置为零。
- 第 2 组和第 3 组也是如此。
通过 Linq 执行此操作的最佳方法是什么?
需要添加结果的集合是BOD类型,它包含
Public class BOD
{
public DateTime Date {get; set;}
public string Time {get; set;}
public decimal Volume {get; set;}
public decimal Price {get; set;}
}
【问题讨论】:
-
我们应该从哪里获得 BOD 对象的数量和价格?应该是报价还是投标?还是一个 Auction 对象应该变成两个 BOD 对象?
-
您好,所以 BOD 对象应该为每个组创建一个报价和一个投标。所以在上面的例子中,BOD 中有 6 个项目,第 1 组报价,投标,然后第 2 组报价,投标,然后第 3 组报价,投标。