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