Что мы должны использовать при инициализации некоторых значений из DataTables - PullRequest
0 голосов
/ 03 августа 2010

Что лучше использовать, когда вы хотите инициализировать свойства класса из datatable.

т.е.

name=dt.Rows[0][0] or name=dt.Rows[0]["Name"]

Какой подход является более масштабируемым и простым в обращении. В настоящее время я использую второй подход, но мне кажется, что если я использую индексы, а не имена, мне нужно только изменить хранимые процедуры, а не пользовательский интерфейс.

Но ухудшает читабельность кода. Так что я должен пойти на

Ответы [ 3 ]

1 голос
/ 03 августа 2010

Имена столбцов, так как это делает все это более читабельным. Если вы собираетесь изменять хранимые процедуры, использование индексов столбцов мало чем поможет, поскольку вы можете изменять количество или порядок столбцов.

1 голос
/ 03 августа 2010

Один из вариантов - иметь что-то среднее:

private const int NameColumn = 0;
...
name = dt.Rows[0][NameColumn];

Это дает вам одно место для изменения, если меняется порядок / определения столбцов, но также дает читаемый код в точке доступа. Я не уверен, что это решает проблему необходимости одновременного изменения и кода пользовательского интерфейса, и хранимых процедур: если ваши SP эффективно меняют свой открытый интерфейс, вы должны ожидать , чтобы изменить код пользовательского интерфейса , Тем не менее, этот подход может уменьшить боль от этих изменений, а также не засорять ваш код магическими значениями.

(Возможно, вы захотите рассмотреть строго типизированные наборы данных ... или перейти на решение, не относящееся к DataTable, например Entity Framework. Возможно, оно не подходит в вашей ситуации, но стоит задуматься.)

0 голосов
/ 03 августа 2010

Использование числового индекса быстрее, чем многократное использование строкового индекса.Вы можете вычислить числовой индекс во время выполнения один раз, прежде чем выполнять цикл по строкам таблицы следующим образом:

int indexName = dt.Columns.IndexOf("Name")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...