Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ToTable() [4/4]

DataTable System.Data.DataView.ToTable ( string? tableName,
bool distinct,
params string[] columnNames )
inlineinherited

Definition at line 1472 of file DataView.cs.

1473 {
1474 DataCommonEventSource.Log.Trace("<ds.DataView.ToTable|API> {0}, TableName='{1}', distinct={2}", ObjectID, tableName, distinct);
1475 if (columnNames == null)
1476 {
1477 throw ExceptionBuilder.ArgumentNull("columnNames");
1478 }
1479 DataTable dataTable = new DataTable();
1480 dataTable.Locale = _table.Locale;
1481 dataTable.CaseSensitive = _table.CaseSensitive;
1482 dataTable.TableName = ((tableName != null) ? tableName : _table.TableName);
1483 dataTable.Namespace = _table.Namespace;
1484 dataTable.Prefix = _table.Prefix;
1485 if (columnNames.Length == 0)
1486 {
1487 columnNames = new string[Table.Columns.Count];
1488 for (int i = 0; i < columnNames.Length; i++)
1489 {
1490 columnNames[i] = Table.Columns[i].ColumnName;
1491 }
1492 }
1493 int[] array = new int[columnNames.Length];
1495 for (int j = 0; j < columnNames.Length; j++)
1496 {
1497 DataColumn dataColumn = Table.Columns[columnNames[j]];
1498 if (dataColumn == null)
1499 {
1500 throw ExceptionBuilder.ColumnNotInTheUnderlyingTable(columnNames[j], Table.TableName);
1501 }
1502 dataTable.Columns.Add(dataColumn.Clone());
1504 }
1506 try
1507 {
1508 while (enumerator.MoveNext())
1509 {
1510 DataRowView dataRowView = (DataRowView)enumerator.Current;
1511 object[] array2 = new object[columnNames.Length];
1512 for (int k = 0; k < array.Length; k++)
1513 {
1514 array2[k] = dataRowView[array[k]];
1515 }
1516 if (!distinct || !RowExist(list, array2))
1517 {
1518 dataTable.Rows.Add(array2);
1519 list.Add(array2);
1520 }
1521 }
1522 return dataTable;
1523 }
1524 finally
1525 {
1526 IDisposable disposable = enumerator as IDisposable;
1527 if (disposable != null)
1528 {
1529 disposable.Dispose();
1530 }
1531 }
1532 }
void Add(TKey key, TValue value)
DataColumnCollection Columns
Definition DataTable.cs:327
bool RowExist(List< object[]> arraylist, object[] objectArray)
Definition DataView.cs:1534
IEnumerator GetEnumerator()
Definition DataView.cs:802

References System.Data.DataView._table, System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Data.ExceptionBuilder.ArgumentNull(), System.array, System.Data.DataTable.CaseSensitive, System.Data.ExceptionBuilder.ColumnNotInTheUnderlyingTable(), System.Data.DataTable.Columns, System.Data.InternalDataCollectionBase.Count, System.Data.DataView.GetEnumerator(), System.Data.DataColumnCollection.IndexOf(), System.list, System.Data.DataTable.Locale, System.Data.DataCommonEventSource.Log, System.Data.DataTable.Namespace, System.Data.DataView.ObjectID, System.Data.DataTable.Prefix, System.Data.DataView.RowExist(), System.Data.DataView.Table, and System.Data.DataTable.TableName.