您的位置:首页 > Web前端

FeatureClass转换为DataTable

2016-05-09 14:56 435 查看
遍历ITable的行

将FeatureClass转换为ITable然后再转换为DataTable,效率较高;

避免使用pTable.GetRow(i).get_Value(j)时,出现hresult 0x80040952错误

private DataTable InitDataTable(IWorkspace pWorkspace)
{
if (pWorkspace == null)
{
return null;
}
DataTable pDataTable = new DataTable();
try
{
IList<ITable> pListFeaCls = GetlistTable(pWorkspace);
foreach (ITable pFeaTable in pListFeaCls)
{
ICursor pCursor = pFeaTable.Search(null, false);
IRow pRow = pCursor.NextRow();
while (pRow != null)
{
pDataTable.Rows.Add(new object[] { pRow.get_Value(1), pRow.get_Value(2), pRow.get_Value(3),pRow.get_Value(4),
pRow.get_Value(5), pRow.get_Value(6), pRow.get_Value(7),pRow.get_Value(8)});
pRow = pCursor.NextRow();
}
}
return pDataTable;
}
catch
{
return null;
}
}


获取当前工作空间下的所有的FeatureClass or Table

获取工作空间下的所有的FeatureClass

private IList<IFeatureClass> getListFeaCls(IWorkspace pWs)
{
try
{
IList<IFeatureClass> pListFeaCls = new List<IFeatureClass>();

IEnumDataset pEDataset = pWs.get_Datasets(esriDatasetType.esriDTAny);
IDataset pDataset = pEDataset.Next();
while (pDataset != null)
{
if (pDataset.Type == esriDatasetType.esriDTFeatureClass)
{
pListFeaCls.Add(pDataset as IFeatureClass);
}
else if (pDataset.Type == esriDatasetType.esriDTFeatureDataset)
{
IEnumDataset pESubDataset = pDataset.Subsets;
IDataset pSubDataset = pESubDataset.Next();
while (pSubDataset != null)
{
pListFeaCls.Add(pSubDataset as IFeatureClass);
pSubDataset = pESubDataset.Next();
}
}
pDataset = pEDataset.Next();
}
return pListFeaCls;
}
catch
{
return null;
}
}


获取工作空间加的所以的Table

private IList<ITable> GetlistTable(IWorkspace pWs)
{
try
{
IList<ITable> pListFeaCls = new List<ITable>();

IEnumDataset pEDataset = pWs.get_Datasets(esriDatasetType.esriDTAny);
IDataset pDataset = pEDataset.Next();
while (pDataset != null)
{
if (pDataset.Type == esriDatasetType.esriDTTable)
{
pListFeaCls.Add(pDataset as ITable);
}
pDataset = pEDataset.Next();
}
return pListFeaCls;
}
catch
{
return null;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ITable DataTable