开发者

Using Lambda expressions to order a list by GMT date

开发者 https://www.devze.com 2022-12-19 19:36 出处:网络
I have a list that contains dates that are in GMT forma开发者_如何学编程t. What is the most elegant way to ensure that the following Lambda expression orders on the date field as GMT?

I have a list that contains dates that are in GMT forma开发者_如何学编程t.

What is the most elegant way to ensure that the following Lambda expression orders on the date field as GMT?

ProductsList.OrderBy(Product => Product.Added).ToList(); 


The inbuilt LINQ operators use the expected sort operations (for LINQ-to-Objects, it does this using Comparer<T>.Default. Your lambda expression is strongly typed; behind the scenes the compiler inferred some generics for you - it is actually:

var newList = Enumerable.OrderBy<Product,DateTime>(
         ProductsList, Product => Product.Added).ToList(); 

It already knows it is a DateTime, so the only time you'd need to do something extra here is if your dates contain a range of different timezones. Of course, within a timezone you should be fine, but you could (if you were paranoid) convert all to UTC - I don't think you need to do this in your case, but:

var newList = ProductsList.OrderBy(
        Product => Product.Added.ToUniversalTime()).ToList();

Note that this actually creates a second list (it doesn't change the ordering of the original list); you can use the code from here to do an in-place sort using lambdas:

ProductsList.Sort(Product => Product.Added);
0

精彩评论

暂无评论...
验证码 换一张
取 消