Это зависит от того, насколько просто вам нужна переменная, или если вы хотите, чтобы она имела смысл.
Проверяя, не указан ли тип, будет проверяться, была ли еще определена переменная.
=== null
или !== null
будет проверять, действительно ли значение переменной равно null
.
== null
или != null
проверяет, установлено ли значение undefined
или null
.
if(value)
проверяет, есть ли переменная undefined
, null
, 0
или пустая строка.
Можно использовать DataColumn. SetOrdinal () метод с этой целью.
DataSet ds = new DataSet();
ds.Tables.Add(new DataTable());
ds.Tables[0].Columns.Add("column_1", typeof(string));
ds.Tables[0].Columns.Add("column_2", typeof(int));
ds.Tables[0].Columns.Add("column_4", typeof(string));
ds.Tables[0].Columns.Add("column_3", typeof(string));
//set column 3 to be before column 4
ds.Tables[0].Columns[3].SetOrdinal(2);
Я использовал Ваше предложение для создания метода расширения для DataColumnCollection DataSet:
public static void InsertAfter(this DataColumnCollection columns,
DataColumn currentColumn, DataColumn newColumn)
{
if (!columns.Contains(currentColumn.ColumnName))
throw new ArgumentException(/** snip **/);
columns.Add(newColumn);
//add the new column after the current one
columns[newColumn.ColumnName].SetOrdinal(currentColumn.Ordinal + 1);
}
я могу теперь записать:
dt = ds.Tables[0];
dt.Columns.InsertAfter(dt.Columns["column_2"], new DataColumn("column_3"));
Скопируйте первые два столбца в новый набор данных, затем добавьте третий столбец и добавьте остальные столбцы.
Вы могли перенести это в функцию InsertAfter при необходимости.