我有一個列表,其中包含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