Linq statement to iterate through a collection and making sure each item is in the correct order?

北城以北 提交于 2019-12-07 04:56:28

问题


i'm got a simple IEnumerable<foo> foos; This collection are some results from a db call.

I wish to make sure that each item in the list is ordered correctly. The Db either returns the results by

  • ordered by id, lowest to highest. eg. 1, 2, 3, 4,. ... etc.
  • ordered by date created, decrement (most recent, first).

Can this be done with a quick linq statement .. to check for this?

eg. Assert.IsTrue(.. insert linq statement here .. )

currently, i've got a for loop and remember the previous entry and check if the value of that, if there was a value. This feels ... cumbersome.

Any ideas?


回答1:


You could compare your collection to an ordered version:

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

Or:

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



回答2:


There is an extension method called SequenceEqual which will do that. However, there is also an assert method called CollectionAssert.AreEqual that compares two collections to ensure they have the same items in the same order.



来源:https://stackoverflow.com/questions/2189812/linq-statement-to-iterate-through-a-collection-and-making-sure-each-item-is-in-t

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!