我不断收到一个索引超出范围例外。不能是非负数,并且小于集合的大小。指数超出范围。必须是非负的错误
问题是我检查toRemove
的人数比受访者低。那么这个错误是怎么发生的?如果5个在respondents
和toRemove
只有3,那么这个错误是怎么发生的?
var respondents = RespondentRepository.GetRespondents(UserSession, fieldsToInclude);
// iterate through the respondents. If search query not like results throw the result away.
List<int> toRemove = new List<int>();
for (int i = 0; i < respondents.Count; i++)
{
if (!respondents[i].EmailAddresses.Any())
toRemove.Add(i);
else
{
bool checkSingleEmail = false;
bool checkAllEmails = false;
for (int j = 0; j < respondents[i].EmailAddresses.Count; j++)
{
checkSingleEmail = respondents[i].EmailAddresses[j].Address.ToString().Contains(query);
if (checkSingleEmail == true)
checkAllEmails = true;
if (respondents[i].EmailAddresses.Count == 1 && j == 0 && checkAllEmails == false)
toRemove.Add(i);
else if (checkAllEmails == false && j+1 == respondents[i].EmailAddresses.Count)
toRemove.Add(i);
}
}
}
foreach (var respRemove in toRemove)
{
respondents.RemoveAt(respRemove);
}
+1 oskar,你说的跟我自己差不多:) –
当我尝试使用上面的respRemove foreach时,我收到repondents.Remove(respRemove)的错误。最好的重载方法匹配有一些无效的参数。 – allencoded
@allencoded那么受访者的类型是什么? –