2016-11-03 4 views
2

を注文するために2つのリストと、LINQクエリを結合:は、私は別のフィールドを持つリストを持っている別のリストから2つの異なるフィールドで

var list1 = // contains 'publish date' 
var list2 = // contains 'press release date' 
var list3 = // contains 'publish date' 
var list4 = // contains 'press release date' 

私が公開した日付やプレスの最新による最初のこれらのリストを結合して、オーダーする必要があります発売日。このsolutionあたりにしようとしました

は、リストが出力されますが、期待どおりにすべてのヘルプは高く評価された日付で

var combinedList = list1.Concat(list2)  
         .Concat(list3) 
         .Concat(list4) 
         .OrderByDescending(x => x.Fields["Press Release Date"] != null || x.Fields["Publish Date"] != null) 
         .ThenBy(x => x.Fields["Press Release Date"] != null ? x.Fields["Press Release Date"].ToString() : "") 
         .ThenBy(x => x.Fields["Publish Date"] != null ? x.Fields["Publish Date"].ToString() : "").ToList(); 

をソートしません。

+0

これらの4つのリストの種類を表示すると、はるかに簡単になります –

+0

すべてのリストは同じタイプです - Sitecore.Data.Items.Item – TomCat

+0

期待どおりの日付で並べ替えられないのはどういう意味ですか?入力は何ですか?最後には何が得られますか? –

答えて

0

あなたがリストの例を与えていないので、このコードはテストされませんでしたが、あなたはそれを試すことができます:リストについて

var combinedList = OrderByDescending(x => x.Fields["Press Release Date"] != null ? x.Fields["Press Release Date"].ToString() : x.Fields["Publish Date"].ToString()).ToList(); 

仮定:

各メンバーは、正確に二つのうちの一つを持っているが - 「プレスリリース日」または「公開日」のいずれかのフィールド。

関連する問題