No, pero posiblemente sí.
Puede configurar sus propios índices en una DataTable, utilizando un DataView. A medida que cambie la tabla, se reconstruirá DataView, por lo que el índice siempre debe estar actualizado.
Hice algunas pruebas en banco para mi propia aplicación. Uso una DataTable para aproximar un Boost MultiIndexContainer. Para crear un índice en una columna llamada "autor", que inicializar el DataTable, y luego el DataView ...
_dvChangesByAuthor =
new DataView(
_dtChanges,
string.Empty,
"Author ASC",
DataViewRowState.CurrentRows);
a continuación, extraer datos por autor de la mesa, se utiliza la función de la vista FindRows ...
dataRowViews = _dvChangesByAuthor.FindRows(author);
List<DataRow> returnRows = new List<DataRow>();
foreach (DataRowView drv in dataRowViews)
{
returnRows.Add(drv.Row);
}
I hizo una gran DataTable al azar, y corrieron consultas utilizando DataTable.Select(), Linq-To-conjunto de datos (con la ejecución forzada mediante la exportación a la lista) y el método DataView anteriormente. El método DataView ganó fácilmente. LINQ tomó garrapatas 5000, Select tomó más de 26.000 garrapatas, DataView tomó 192 garrapatas ...
LOC=20141121-14:46:32.863,UTC=20141121-14:46:32.863,DELTA=72718,THR=9,DEBUG,LOG=Program,volumeTest() - Running queries for author >TFYN_AUTHOR_047<
LOC=20141121-14:46:32.863,UTC=20141121-14:46:32.863,DELTA=72718,THR=9,DEBUG,LOG=RightsChangeTracker,GetChangesByAuthorUsingLinqToDataset() - Query elapsed time: 2 ms, 4934 ticks; Rows=65
LOC=20141121-14:46:32.879,UTC=20141121-14:46:32.879,DELTA=72733,THR=9,DEBUG,LOG=RightsChangeTracker,GetChangesByAuthorUsingSelect() - Query elapsed time: 11 ms, 26575 ticks; Rows=65
LOC=20141121-14:46:32.879,UTC=20141121-14:46:32.879,DELTA=72733,THR=9,DEBUG,LOG=RightsChangeTracker,GetChangesByAuthorUsingDataview() - Query elapsed time: 0 ms, 192 ticks; Rows=65
Por lo tanto, si desea índices en un DataTable, sugeriría DataView, si se puede tratar con el hecho de que el índice se reconstruye cuando los datos cambian.
[Tenga en cuenta que DataViews * do * tiene índices] (https://msdn.microsoft.com/en-us/library/bb669089 (v = vs.110) .aspx). "El índice para un DataView está construido tanto cuando se crea el DataView como cuando se modifica cualquiera de los datos de clasificación o filtrado". –