我有两个列表,我需要用另一个列表对列表进行排序。
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
。
答案 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();