Мудрый Зомбайн

Вчера попал в интересную мозгодробительную ситуацию.

Оказывается, в классе, использующемся для Linq2Sql, который представляет собой проекцию на таблицу в Субд имеет значение порядок, в котором расположены поля, помеченные как [Column] !!!

По-умолчанию, записи выбираются в том порядке, в каком они записаны, и это может сыграть злую шутку в дальнейшем, если не знать нюанс.
В случае использования метода .Skip(...) для некоторой выборки, все элементы сначала будут отсортированы по столбцу, который идет первый в классе, помеченный как [Column], затем будет скипнуто нужное количество элементов, и возвращен результат в новом отсортированном виде.

Так что, располагайте поля в классе проекции так, чтобы то поле, по которому нужна сортировка по-умолчанию шло первым.
Возможно эта ситуация проявляется и в других методах.

@темы: Take, Программирование, IQuerable, Linq2Sql, Skip