C#Linq订购带有参考列表的列表

时间:2018-06-12 08:01:48

标签: c# linq

我有两个列表,我需要用另一个列表对列表进行排序。

var orderList = new List<long>() {4, 55, 34};
var itemList = new List<Branch>() { {Id=55, Name="X"},  {Id=34, Name="Y"}, {Id=4, Name="Z"} }; 

如何根据前一个itemList订购第二个列表orderList

有没有linq短路?

更新

orderList将始终包含所有预期的Id分支itemList

4 个答案:

答案 0 :(得分:4)

您可以使用LINQ并按其索引在其他数组中对项目进行排序:

var orderedItemList = itemList.OrderBy(x => orderList.IndexOf(x.Id)).ToList();

答案 1 :(得分:4)

你可以在linq下面执行以解决你的问题:

 List<Branch> sortedProducts = new List<Branch>();

 orderList.ForEach(x => sortedProducts.Add(itemList.FirstOrDefault(ele => ele.Id == x)));

注意: - 此处只会添加那些索引存在于orderList

中的元素

答案 2 :(得分:2)

您可以执行以下操作:

itemList = itemList.OrderBy(d => orderList.IndexOf(d.Id)).ToList();

答案 3 :(得分:2)

您可以按Id

orderList的索引排序
var result = itemList.OrderBy(e => orderList.IndexOf(e.Id)).ToList();