private static DataTable GetTableFromView(DataView dataView, bool rowOrdinals, int top, ref string ordinalColumnName)
{
DataTable dataTable = dataView.ToTable();
if (rowOrdinals)
{
ordinalColumnName = "_ordinal";
while (dataTable.Columns.Contains(ordinalColumnName))
{
ordinalColumnName = "_" + ordinalColumnName;
}
dataTable.Columns.Add(ordinalColumnName, typeof(int));
var it = dataView.GetEnumerator();
int rowCounter = -1;
while (it.MoveNext())
{
rowCounter++;
if (top > 0 && rowCounter >= top)
{
break;
}
DataRow dataRow = ((DataRowView)it.Current).Row;
dataTable.Rows[rowCounter][ordinalColumnName] = dataRow.Table.Rows.IndexOf(dataRow);
}
}
return(dataTable);
}