我有一个列表,其中包含GMT格式的日期。使用Lambda表达式按格林尼治平时间排序列表日期
确保日期字段中的以下Lambda表达式命令以GMT格式的最优雅方式是什么?
ProductsList.OrderBy(Product => Product.Added).ToList();
我有一个列表,其中包含GMT格式的日期。使用Lambda表达式按格林尼治平时间排序列表日期
确保日期字段中的以下Lambda表达式命令以GMT格式的最优雅方式是什么?
ProductsList.OrderBy(Product => Product.Added).ToList();
内置的LINQ运营商使用预期的排序操作(LINQ到对象,为此,它使用Comparer<T>.Default
你的lambda表达式是强类型的,幕后的编译器推断出一些仿制药给你 - 这是。实际上:
var newList = Enumerable.OrderBy<Product,DateTime>(
ProductsList, Product => Product.Added).ToList();
它已经知道它是一个DateTime
,所以唯一一次你需要做些额外的事情在这里,如果你的日期包含一系列不同的时区的过程中,内一个。你的时区HOULD被罚款,但你可以(如果你是偏执狂)转换所有UTC - 我不认为你需要做的,你的情况,但:
var newList = ProductsList.OrderBy(
Product => Product.Added.ToUniversalTime()).ToList();
注意,这实际上创建了一个第二个列表(它不会改变原始列表的排序);您可以使用code from here来排序做一个就地使用lambda表达式:
ProductsList.Sort(Product => Product.Added);
谢谢,正是我需要的! – 2010-02-05 14:03:21
你是什么意思“在格林尼治标准时间格式”是什么意思?新增属性的类型是什么?格林威治标准时间 – 2010-02-05 10:42:41
。添加的是从sql数据库检索的DateTime字段。顺便说一句,我知道这个问题是一个乔恩Skeet蜂蜜陷阱!大声笑; - > – 2010-02-05 10:45:28
GMT是如何相关的? 'Added'属性是否包含各个时区的日期?如果他们全部在同一时区,那么如果您只是按日期排序,或者您首先将所有日期首先转换为GMT,那么订单不会更改。我想我在这里丢失了一些东西... – 2010-02-05 10:50:11