2016-11-03 3 views
2

Ich habe Listen mit verschiedenen Bereichen:kombinieren zwei Liste und Linq-Abfrage durch zwei verschiedene Felder aus verschiedenen Listen bestellen

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

ich diese Listen zuerst und dann, um die neuesten Veröffentlichungsdatum oder drücken Sie kombinieren muß Veröffentlichungsdatum.

pro dieses solution Versuchte, Liste ausgegeben, aber es durch die Tage nicht wie erwartet sortiert wird

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(); 

Jede Hilfe sehr geschätzt.

+0

Wird viel einfacher sein, wenn Sie die Typen dieser 4 Listen anzeigen –

+0

Alle Listen sind vom gleichen Typ - Sitecore.Data.Items.Item – TomCat

+0

was meinst du nicht sortiert nach Daten wie erwartet? Was ist der Input und was bekommst du am Ende? –

Antwort

0

Dieser Code wurde nicht geprüft, da Sie nicht ein Beispiel der Listen gegeben hat, aber man kann es versuchen:

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

Annahme über die Listen:

jedes Mitglied genau eine der beiden hat Felder - entweder "Press Release Date" oder "Publish Date".

Verwandte Themen