C#linq根据另一个列表中的排名对列表进行排序

时间:2020-02-26 15:40:35

标签: c# linq

我在C#中有两个列表

    var list1 = new List<int>() { 1,2,3,4};

    var list2 = new List<Rank>()
    {
    new Rank {Id = 1, SortOrder = 2},
    new Rank {Id = 2, SortOrder = 3},
    new Rank {Id = 3, SortOrder = 1},
    new Rank {Id = 4, SortOrder = 4}
   };

我想根据list2中的SortOrder对list1进行排序

结果

list1 =
3,1,2,4

在LINQ中有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用zip

var result = list1.Zip(list2, (l1, l2) => new { l1, l2 })
                  .OrderBy(pair => pair.l2.SortOrder)
                  .Select(pair => pair.l1)
                  .ToList();