使用另一个复杂对象列表 C# 对复杂对象列表进行排序

Order a list of complex objects with another list of complex objects C#

我有两个这样的对象列表:

List<Result> result = [{id: 1, country: 'France'}, {id: 2,country: 'Sweden'}, {id: 5,country: 'Denmark'}]

List<OrderResult> orderResult = [{id: 5, score: 12}, {id: 1, score: 11}, {id: 2, score 10}]

我会根据数组 orderResult 的顺序对列表结果进行排序以获得最终结果:

result = [{id: 5, country 'Denmark'}, {id: 1, country: 'France'}, {id: 2, country: 'Sweden'}]

您可以将 OrderResult 列表转换为以 id 为键,索引为值的字典:

 var orderDict = orderResults
            .Select((value, index) => (value.Id, index))
            .ToDictionary(p => p.Id, p => p.index);

假设所有结果在 orderResults 中都有相应的条目,那么对结果进行排序应该是微不足道的。:

result.OrderBy(r => orderDict[r.id]);