System.Data.DataRowCollection';不包含';ToList';并且没有扩展方

本文关键字:扩展 包含 Data DataRowCollection System ToList | 更新日期: 2023-09-27 18:26:45

我真的很难解决这个

 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;
    }

我有问题"tblThreadedSpecies 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);
                }
            }

我试着根据你们的建议进行修改,但现在我有了不同的例外。

希望有人能指引我走上正确的道路。

System.Data.DataRowCollection';不包含';ToList';并且没有扩展方

DataRowCollection不实现通用IEnumerable<DataRow>,而只实现非通用ÌEnumerable接口。这就是为什么不能直接在DataTable.Rows上使用LINQ扩展方法的原因。

您必须使用DataTable.AsEnumerableDataTable.Rows.Cast<DataRow>

List<DataRow> rowList = objAssessment.tblThreatenedSpeciesSubzone.AsEnumerable().ToList();