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

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

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

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

有没有linq短路?

更新:

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

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

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

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

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

注意: – 这里只添加那些索引存在于orderList中的orderList

您可以执行以下操作:

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

您可以通过orderList中的Id索引进行orderList

 var result = itemList.OrderBy(e => orderList.IndexOf(e.Id)).ToList();