Как лучше всего отсортировать таблицу данных в ADO.NET

Что лучше всего подходит для сортировки таблицы данных в С# как с точки зрения производительности, так и с точки зрения удобочитаемости кода:

personsDT.OrderBy(person => person.PersonName);

or:

personsDT.DefaultView.Sort = "PersonName ASC";

PersonDT построен из списка SharePoint, поэтому невозможно использовать SQL (я знаю, что ORDER BY в операторе SQL SELECT был бы лучшим способом). Учитывая производительность, я обеспокоен тем, что предложение OrderBy‹> может работать медленнее, чем Sort в представлении данных. Знаете ли вы о таких последствиях для производительности?


person kjv    schedule 26.03.2009    source источник


Ответы (4)


Я предпочту первый вариант.

1) Для кода с точки зрения удобочитаемости я думаю, что Lambda понятнее, чем второй.

2) В первом случае вы используете строгий способ сортировки вашего объекта, что хорошо.

3) Во втором случае вы проходите поле и порядок в строке мммм не нравится.

вперед лямбды!!!

С уважением!

person MRFerocius    schedule 26.03.2009

Какова цель вопроса? Производительность почти наверняка не является проблемой; если нет, вам нужно проверить это в вашем контексте. Я думаю, что если вы указываете сортировку для инструкции SQL, она должна быть в инструкции SQL; и я предпочитаю избегать построчного построения операторов SQL, если это возможно. Что вам больше нравится эстетически?

person dkretz    schedule 26.03.2009
comment
Я думаю, что вопрос правильный; заполнив DataTable, вам может потребоваться предоставить для него разные отсортированные представления - зачем возвращаться к БД, если вы можете (повторно) сортировать его локально. - person Adrian K; 08.11.2011

Чтобы бросить мои 2c в банк:

Исходя из фона sql, я лично нахожу способ sql более интуитивным, но это не причина следовать ему. Для лямбда-метода есть несколько хороших рекомендаций:

Как отмечает М.Р. Фероциус (преднамеренно ли отсутствует буква «о»?) — лямбда-метод строго типизирован. Это хорошая вещь.

И еще вот что: если ваши критерии сортировки когда-нибудь станут более сложными, лямбда-метод позволит вам использовать дополнительные и эзотерические условия, которых не смог бы использовать метод sql.

С точки зрения производительности они должны быть примерно равными для такого простого условия.

person GenericMeatUnit    schedule 04.02.2010

Ну, а если производительность очень важна, отсортируйте ее в БД SQL перед получением данных.

person Carra    schedule 26.03.2009
comment
Плакат заявляет, что источником данных является список точек обмена и что он знает, но не может использовать метод sql ORDER BY, хотя я не знаю, было ли это написано до или после вашего ответа. - person GenericMeatUnit; 04.02.2010