Linq语句迭代一个集合并确保每个项目的顺序正确吗?

时间:2010-02-03 05:00:22

标签: .net linq linq-to-objects

我有一个简单的IEnumerable<foo> foos;这个集合是来自db调用的一些结果。

我希望确保列表中的每个项目都正确排序。 Db要么通过

返回结果
  • 按ID排序,从最低到最高。例如。 1,2,3,4,。 ......等等。
  • 按创建日期排序,减少(最近,第一次)。

这可以通过快速的linq语句完成..来检查这个吗?

例如。 Assert.IsTrue(.. insert linq statement here .. )

目前,我有一个for循环,并记住上一个条目并检查是否有值,如果有值。这感觉很麻烦。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您可以将您的收藏与订购版本进行比较:

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

或者:

CollectionAssert.AreEqual(foos.ToList(), 
                          foos.OrderByDescending(f => f.DateCreated));

答案 1 :(得分:2)

有一种名为SequenceEqual的扩展方法可以做到这一点。但是,还有一个名为CollectionAssert.AreEqual的断言方法,它比较两个集合以确保它们具有相同顺序的相同项目。