【发布时间】:2019-11-12 20:57:35
【问题描述】:
我真的很困惑如何解决这个问题
public bool DeleteVegetationZone(ref Assessment objAssessment, int VegetationZoneIDToDelete, string UserFullname, ref string ErrorMessage)
{
string RowFilter = @"VegetationZoneID=" + Convert.ToString(VegetationZoneIDToDelete);
Assessment.tblVegetationZoneRow[] VegetationZoneRows = (Assessment.tblVegetationZoneRow[])objAssessment.tblVegetationZone.Select(RowFilter);
if ((VegetationZoneRows != null) && (VegetationZoneRows.Length != 0))
{
if (VegetationZoneRows.Length == 1)
{
if (VegetationZoneRows[0].VegetationZoneID > 0)
{
VegetationZoneRows[0].UpdatedBySystemUser = UserFullname;
VegetationZoneRows[0].SaveType = (int)EnumCollection.SaveType.RemoveOnly;
}
else
{
VegetationZoneRows[0].Delete();
objAssessment.AcceptChanges();
}
//tblThreatenedSpeciesSubzone
var list = objAssessment.tblThreatenedSpeciesSubzone.Rows.ToList();
for (int i = 0; i < objAssessment.tblThreatenedSpeciesSubzone.Count; i++)
{
foreach (Assessment.tblThreatenedSpeciesSubzoneRow ThreatenedSpeciesSubzoneRow in objAssessment.tblThreatenedSpeciesSubzone.Rows)
{
if (ThreatenedSpeciesSubzoneRow.VegetationZoneID == VegetationZoneIDToDelete)
DeleteThreatenedSpeciesSubzone(ref objAssessment, ThreatenedSpeciesSubzoneRow.ThreatenedSpeciesZoneID, UserFullname, ref ErrorMessage);
}
}
UpdateSpeciesGeoHabitatSurveyTime(ref objAssessment, UserFullname, ref ErrorMessage);
}
else
{
//Cannot have more than one row with same key
ErrorMessage = "Error: More than one record found - Vegetation zone ID = " + Convert.ToString(VegetationZoneIDToDelete);
return false;
}
}
else
{
//Must have at least one row with same key
ErrorMessage = "Error: Record not found - Vegetation zone ID = " + Convert.ToString(VegetationZoneIDToDelete);
return false;
}
return true;
}
我有问题“tblThreatenedSpecies Subzone”要删除,它抛出异常“发生错误。集合已修改;枚举操作可能无法执行”
var list = objAssessment.tblThreatenedSpeciesSubzone.Rows.ToList();
for (int i = 0; i < objAssessment.tblThreatenedSpeciesSubzone.Count; i++)
{
foreach (Assessment.tblThreatenedSpeciesSubzoneRow ThreatenedSpeciesSubzoneRow in objAssessment.tblThreatenedSpeciesSubzone.Rows)
{
if (ThreatenedSpeciesSubzoneRow.VegetationZoneID == VegetationZoneIDToDelete)
DeleteThreatenedSpeciesSubzone(ref objAssessment, ThreatenedSpeciesSubzoneRow.ThreatenedSpeciesZoneID, UserFullname, ref ErrorMessage);
}
}
我尝试根据你们的建议进行修改,但现在我有不同的例外。
希望有人引导我走上正确的道路。
【问题讨论】:
-
您是否遇到了 ToList() 问题,或者“发生错误。集合已修改;枚举操作可能无法执行”?
-
ToList() 出现问题,我正在修改早期的异常集合,因此请尝试更改为 TOList
-
@Usher:我猜你实际上想在
foreach中循环这个列表,以防止“集合已修改”错误,即使它当前未使用。
标签: c#