jujus
jujus

Reputation: 199

DataTable in C# - named rows

Is it possible to give name for each row in DataTable? I would like to simply refer to the given cell in DataTable by typing

myDataTable.Rows["Row1"]["Column1"]

instead passing Row Index as int.

Upvotes: 0

Views: 179

Answers (1)

BionicCode
BionicCode

Reputation: 28968

You can't do this, because rows are only indexed by their row index. Columns are indexed by their column index and column name. If you need to reference rows by a name, you must create your own index:

var rowNameToIndexMap = new Dictionary<string, int>();
var dataTable = new DataTable();
      
/* Index a row */
var row = dataTable.NewRow();
dataTable.Rows.Add(row);
var rowName = "first row";
rowNameToIndexMap.Add(rowName, dataTable.Rows.Count - 1);

/* Retrieve first row by its row name */
if (rowNameToIndexMap.TryGetValue(rowName, out int rowIndex))
{
  var firstRow = dataTable.Rows[rowIndex];
}

Upvotes: 2

Related Questions