1

GMT形式の日付を含むリストがあります。

次のラムダ式が日付フィールドでGMTとして順序付けられるようにするための最もエレガントな方法は何ですか?

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

1 に答える 1

2

組み込みの LINQ 演算子は、予想される並べ替え操作を使用します (LINQ-to-Objects の場合、 を使用してこれを行いComparer<T>.Defaultます。ラムダ式は厳密に型指定されています。舞台裏でコンパイラがいくつかのジェネリックを推測しました。実際には次のとおりです。

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

であることはすでに認識DateTimeされているため、ここで何か特別なことをする必要があるのは、日付にさまざまなタイムゾーンの範囲が含まれている場合だけです。もちろん、タイムゾーン内では問題ないはずですが、(妄想的であれば)すべてをUTCに変換できます-あなたの場合、これを行う必要はないと思いますが、

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

これにより、実際には2 番目のリストが作成されることに注意してください (元のリストの順序は変更されません)。ここのコードを使用して、ラムダを使用してインプレース ソートを実行できます。

ProductsList.Sort(Product => Product.Added);
于 2010-02-05T12:53:50.167 に答える