我需要组合两个不同的集合并以交错格式一起显示它们。
class Program
{
static void Main(string[] args)
{
var NewsList = new List<DateTime>();
NewsList.Add(new DateTime(2016, 9, 25));
NewsList.Add(new DateTime(2016, 10, 15));
NewsList.Add(new DateTime(2016, 10, 24));
NewsList.Add(new DateTime(2016, 10, 27));
NewsList.Add(new DateTime(2016, 10, 31));
var EventList = new List<DateTime>();
EventList.Add(new DateTime(2016, 10, 31));
EventList.Add(new DateTime(2016, 11, 1));
EventList.Add(new DateTime(2016, 11, 4));
EventList.Add(new DateTime(2016, 11, 5));
EventList.Add(new DateTime(2016, 11, 10));
var CombinedList = EventList.Union(NewsList).OrderBy(i => i);
Display(SortDescending(NewsList), "News List SortDescending - Newsest To Oldest");
Display(SortAscending(EventList), "Event List SortAscending - Oldest To Newest");
DisplayCombined(CombinedList, "ComindedList");
}
/// Displays the list from Oldest -> Newest
static List<DateTime> SortAscending(List<DateTime> list)
{
list.Sort((a, b) => a.CompareTo(b));
return list;
}
/// Displays the list from Newest -> Oldest
static List<DateTime> SortDescending(List<DateTime> list)
{
list.Sort((a, b) => b.CompareTo(a));
return list;
}
static void Display(List<DateTime> list, string message)
{
Console.WriteLine(message);
foreach (var datetime in list)
{
Console.WriteLine(datetime);
}
Console.WriteLine();
Console.ReadLine();
}
static void DisplayCombined(IEnumerable<DateTime> list, string message)
{
Console.WriteLine(message);
foreach (var datetime in list)
{
Console.WriteLine(datetime);
}
Console.WriteLine();
Console.ReadLine();
}
}
正如您将在上面看到的,我尝试使用组合了两个列表的联合,这按照OrderBy方法设置的升序显示整个组合集合(在这种情况下为OrderBy(i =&gt;一世))。如果未明确设置任何订单,则默认情况下,它将返回保留的每个项目,首先从EventsList返回NewsList,同时保持最初为两个列表设置的顺序。
我想要显示的内容将是一个交错的列表,所以我从一个列表中获取一个项目,然后从下一个等等中获取一个项目....这样
答案 0 :(得分:1)
您可以让CombinedList
包含包含两个值的类,即事件日期和新闻日期。例如:
var combinedList = NewsList.Zip(EventList,
(first, second) => { return new {EventDate = first, NewsDate = second}; });
int i = 1;
foreach (var x in combinedList)
{
Console.WriteLine($"Event {i}: {x.EventDate}");
Console.WriteLine($"News {i}: {x.NewsDate}");
++i;
}
这假定EventList
和NewsList
具有相同数量的项目。如果一个比另一个长,那么这些额外的项目将会丢失。