我知道什么是越界索引。当我调试时,我也看到了原因。基本上正在发生的事情是我对我的数据库进行过滤以查找潜在/待定的记录。然后,我收集一组这些数字,将它们发送到另一台服务器,以检查这些数字是否已升级为销售。如果它已升级为销售,服务器会返回新的销售订单 ID 和我的旧待处理销售订单 ID (SourceID)。然后,我在该列表上执行一个 for 循环,以将其过滤掉特定的 SourceID,并将 SourceID 更新为销售订单 ID,并更改几个其他值。问题是,当我在第一个过滤器上使用该过滤器时,它会引发索引越界错误。我检查过滤器返回的结果,它显示为 0。我觉得有点奇怪,因为我从列表中获取了销售订单号,所以它应该在那里。所以我不知道这笔交易是什么。这是引发错误的相关代码。而且它并非一直都这样做。就像我今天早上刚刚运行代码并没有抛出错误一样。但昨晚在我回家之前发生了。
filter.RowFilter = string.Format("Stage = '{0}'", Potential.PotentialSale);
if (filter.Count > 0)
{
var Soids = new int[filter.Count];
Console.Write("Searching for Soids - (");
for (int i = 0; i < filter.Count; i++)
{
Console.Write(filter[i][1].ToString() + ",");
Soids[i] = (int)filter[i][1];
}
Console.WriteLine(")");
var pendingRecords = Server.GetSoldRecords(Soids);
var updateRecords = new NameValueCollection();
for (int i = 0; i < pendingRecords.Length; i++)
{
filter.RowFilter = "Soid = " + pendingRecords[i][1];
filter[0].Row["Soid"] = pendingRecords[i][0];
filter[0].Row["SourceId"] = pendingRecords[i][1];
filter[0].Row["Stage"] = Potential.ClosedWon;
var potentialXML = Potential.GetUpdatePotentialXML(filter[0].Row["Soid"].ToString(), filter[0].Row["Stage"].ToString());
updateRecords.Add(filter[0].Row["ZohoID"].ToString(), potentialXML);
}
如果我计算正确的第 17 行是引发错误的错误。pendingRecords 是一个 object[][] 数组。pendingRecords[i] 是单个记录。pendingRecords[i][0] 是新的 Sales OrderID (SOID),pendingRecords[i][1] 是旧的 SOID(现在是 SourceID)
对这个有帮助吗?是因为我将 SOID 更改为新的 SOID,并且过滤器自动更新吗?我只是不知道