组合两个列表和linq查询,按来自不同列表的两个不同字段排序

本文关键字:列表 两个 字段 排序 查询 linq 组合 | 更新日期: 2023-09-27 18:16:16

我有不同字段的列表:

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

我需要首先将这些列表组合起来,然后按最晚发布日期或新闻稿日期排序。

按此解决方案尝试,输出列表,但它没有按预期的日期排序

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

组合两个列表和linq查询,按来自不同列表的两个不同字段排序

由于没有给出列表的示例,因此没有对该代码进行测试,但是您可以尝试一下:

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

关于列表的假设:

每个成员只有两个字段中的一个-"Press Release Date"或"Publish Date"。