我有两个已根据日期排序的列表。这两个列表是不同类型的。 但这两个列表都包含日期类型属性。
例如:列表A由员工组成,列表B由部门
组成例如:
Sample List A:
{
{
id=1;
Date=12/7/2016;
some other data..
},
{
id=2;
Date=13/5/2016;
some other data..
},
}
Sample List B:
{
{
id=1;
Date=1/9/2016;
some other data..
},
{
id=2;
Date=19/6/2016;
some other data..
},
}
我需要同时遍历这两个列表,以便根据日期属性对结果进行排序。
因此,如果最高日期值来自列表B,则调用函数从列表B打印该记录的详细信息。接下来从两个列表中查找下一个最高日期值,现在如果它来自列表A则调用函数从列表A打印该记录的详细信息。
答案 0 :(得分:3)
您的问题很模糊,可能您正在寻找Concat
:
让BaseAB
成为基类,共享接口等,其中包含
至少Date
属性
List<ClassA> A = ...
List<ClassB> B = ...
var result A
.Concat<BaseAB>(B)
.OrderByDescending(item => item.Date);
foreach (var item in result) {
var itemA = item as A;
if (itemA != null) {
...
}
else {
var itemB = item as B;
...
}
}
在(丑陋)案例中A
和B
共有 nothing ,您可以使用人工Tuple<DateTime, Object>
表示:
var result = ListA
.Select(item => new Tuple<DateTime, Object>(item.Date, item))
.Concat(ListB
.Select(item => new Tuple<DateTime, Object>(item.Date, item)))
.OrderByDescending(tuple => tuple.Item1)
.Select(tuple => tuple.Item2);