2
我有以下方法:.NET的LINQ:检查数组索引和长度EXCEPTION
/// <summary>
/// Gets the specified side of trades.
/// </summary>
/// <param name="tradesDictionary">The trades dictionary.</param>
/// <param name="side">The side.</param>
public IEnumerable<TradeRecord> GetTrades(Dictionary<Guid, TradeRecord> tradesDictionary, Side side)
{
return (from tradeRecord in tradesDictionary.Values.ToList().AsParallel()
where (tradeRecord.OrderRecord.PairRecord.Id == _pairId)
&& (tradeRecord.Side == side.ToString())
orderby tradeRecord.Date, tradeRecord.DateCreated, tradeRecord.Id
select tradeRecord);
}
这将导致以下异常:
目标数组不够长 复制所有项目在 集合中。检查数组索引和 长度。
字典传入,字号不断增加。我以前没有收到错误,唯一改变的是tradesDictionary中的数据量。
- 为什么会发生此异常?
- 我如何防止它发生?
感谢Jon的建议。我会试试这个。 – c0D3l0g1c 2010-09-21 11:25:04
将我的易失性Dictionary对象更改为ConcurrentDictionary,并且不再接收错误。我在查询开始时也做了你的建议 - 它的确提高了性能,但是可以忽略不计。随着字典的增长,我相信性能增益会变得更加明显。再次感谢! – c0D3l0g1c 2010-09-21 12:38:16