2015-07-27 4 views
1

Я довольно новичок в C#, и я пытаюсь связать свою базу данных Access с программой и манипулировать ею, а затем записать ее в текстовый файл.Сортировка DataTable по определенному столбцу, а не первичному ключу

Однако мои данные в настоящее время отсортированы по идентификатору (который является основным ключом). Я хотел бы отсортировать его на основе Last Name, а затем выполнить манипуляции, потому что, когда я использую foreach (DataRow drr in dra), строки извлекаются в порядке идентификаторов.

[dra-> Ряды данных]

Я хотел бы получить доступ строки после того, как они были отсортированы, но я не уверен, как это сделать. Ниже приведен мой код.

OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect, myAccessConn11); 
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand); 

myAccessConn11.Open(); 
myDataAdapter.Fill(myDataSet, "Personal_Data"); 
myAccessConn11.Close(); 

DataTableCollection dta = myDataSet.Tables; 
DataRowCollection dra = myDataSet.Tables["Personal_Data"].Rows; 

foreach (DataRow drr in dra) 
{ 
    *Manipulation* 
} 

Я пробовал использовать myDataSet.Tables["Personal_Data"].DefaultView.Sort = "LastName DESC";, но это не сработало.

Есть ли другой способ, с помощью которого я могу сортировать строки в таблице, прежде чем обращаться к ним?

Спасибо заранее!

+0

Является ли 'strAccessSelect' sql для доступа к вашим данным? Сделайте заказ там. – Ric

+0

После применения сортировки по умолчанию вам необходимо вызвать .ToTable(), чтобы вернуть результаты с примененным DefaultView. –

+0

Я раньше пробовал ответить, но я получал исключение, потому что моя колонка была помечена как «Фамилия». Теперь я удалил пространство, чтобы попробовать, и это действительно сработало. Это действительно простое решение, но я не был уверен в том, как мне пришлось обрабатывать это исключение в String strAccessSelect. @ Ric- Да, это запрос sql, который я использую. Это выбор. –

ответ

0

Вы можете отсортировать строки в ваш запрос "strAccessSelect", например:

ВЫБРАТЬ Id, FirstName, LastName из MyTable ORDER BY LastName ASC;

+0

Спасибо Оуэн! Это было то, что я пытался сделать намного раньше. Однако имя моей колонки было «Фамилия» с пробелом между ними. Я получал исключение, когда я пытался это сделать. Теперь я переименовал свою колонку как «LastName», и она работает. Поэтому мне просто интересно ... Просто из любопытства. Как бы вы переписали один и тот же оператор select, если мое имя столбца было Last Name, а не LastName. Должен ли я использовать любые escape-последовательности? –

+0

Вы переносите имена столбцов в квадратные скобки, например. [Фамилия] . Но лучше избегать использования пробелов в именах столбцов базы данных. –

+0

О, ладно! Большое спасибо!! –

Смежные вопросы