C# 创建子矩阵
我想创建下面矩阵的C# 创建子矩阵,c#,datetime,C#,Datetime,我想创建下面矩阵的子矩阵或ArrayList(我把它做得更小,这样就适合了),其中tradeTime>sessionBegin和
子矩阵
或ArrayList
(我把它做得更小,这样就适合了),其中tradeTime>sessionBegin和DateTime tradeTime;
private DateTime sessionBegin;
private DateTime sessionEnd;
int[,] hTrades =
{
{ 2012, 11, 9, 10, 24, 1, -1, 8515 },
{ 2012, 11, 9, 10, 24, 2, -1, 8515 },
{ 2012, 11, 9, 10, 44, 3, 1, 8530 },
{ 2012, 11, 9, 10, 44, 4, 1, 8535 },
{ 2012, 11, 9, 10, 55, 5, -1, 8537 },
{ 2012, 11, 9, 10, 55, 6, -1, 8537 },
{ 2012, 11, 9, 11, 1, 7, 1, 8552 },
{ 2012, 11, 9, 11, 7, 8, 1, 8556 },
{ 2012, 11, 11, 18, 18, 1, 1, 8617 },
{ 2012, 11, 11, 18, 18, 2, 1, 8617 },
{ 2012, 11, 11, 18, 18, 3, 1, 8617 },
{ 2012, 11, 11, 18, 18, 4, 1, 8617 }
};
tradeTime = new DateTime(hTrades[i, 0], hTrades[i, 1], hTrades[i, 2],
hTrades[i, 3], hTrades[i, 4], 0);
首先,处理二维阵列可能会有点尴尬。为了简化,您可以将该矩阵的每一行分组为一个对象:
class Trade
{
public DateTime Date { get; set; }
public int Value1 { get; set; }
public int Value2 { get; set; }
}
....
DateTime sessionBegin = new DateTime(2012, 11, 9, 11, 0, 0);
DateTime sessionEnd = new DateTime(2012, 11, 9, 12, 0, 0);
List<Trade> trades = new List<Trade>();
for(int i = 0; i < hTrades.GetLength(0); i++)
{
trades.Add(new Trade()
{
Date = new DateTime(hTrades[i, 0], hTrades[i, 1], hTrades[i, 2], hTrades[i, 3], hTrades[i, 4], 0),
Value1 = hTrades[i, 5],
Value2 = hTrades[i, 6]
});
}
var sessionTrades = trades.Where(t => t.Date > sessionBegin && t.Date <= sessionEnd);
很好的解决方案,谢谢。首先我应该把它放在一个列表中,我想,我在excel中有数据,所以很容易用连接函数将它放在一个矩阵中。。。
{ 2012, 11, 9, 11, 1, 7, 1, 8552 },
{ 2012, 11, 9, 11, 7, 8, 1, 8556 }