Оператор Linq для перебора коллекции и проверки того, что каждый элемент находится в правильном порядке? - PullRequest
5 голосов
/ 03 февраля 2010

у меня есть простое IEnumerable<foo> foos; Эта коллекция - некоторые результаты от вызова db.

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

  • упорядочено по id, от низшего к высшему. например. 1, 2, 3, 4 ,. ... и т. д.
  • упорядочено по дате создания, по убыванию (самое последнее, первое).

Можно ли это сделать с помощью быстрого оператора linq .. чтобы проверить это?

например. Assert.IsTrue(.. insert linq statement here .. )

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

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 03 февраля 2010

Вы можете сравнить свою коллекцию с заказанной версией:

CollectionAssert.AreEqual(foos.ToList(), foos.OrderBy(f => f.Id));

Или:

CollectionAssert.AreEqual(foos.ToList(), 
                          foos.OrderByDescending(f => f.DateCreated));
2 голосов
/ 03 февраля 2010

Существует метод расширения, называемый SequenceEqual , который будет делать это. Однако есть также метод assert, называемый CollectionAssert.AreEqual , который сравнивает две коллекции, чтобы убедиться, что они имеют одинаковые элементы в одном и том же порядке.

...