根据c#中的给定顺序重新排列列表

jax*_*xbo 11 .net c# linq sorting list

我有一个列表如下:

{CT, MA, VA, NY}
Run Code Online (Sandbox Code Playgroud)

我将此列表提交给一个函数,我得到了最佳的航点订单列表

{2,0,1,3}
Run Code Online (Sandbox Code Playgroud)

现在我必须按照新提供的顺序重新排列列表.即重新排列后,列表应如下所示:

{VA, CT, MA, NY}
Run Code Online (Sandbox Code Playgroud)

这样做的最佳方式是什么?使用linq有办法吗?

Li0*_*liQ 25

您可以尝试以下方法:

var list = new List<string>{"CT", "MA", "VA", "NY"};
var order = new List<int>{2, 0, 1, 3};
var result = order.Select(i => list[i]).ToList();
Run Code Online (Sandbox Code Playgroud)

  • @weston问题清楚地表明 - 这里没有假设:) (4认同)

Abe*_*ler 7

这似乎是最简单的方法:

oldItems = LoadItems(); //{"CT","MA","VA","NY"};
List<string> newItems = List<string>();
foreach(int idx in returnedIndexes)
{
   newItems.Add(oldItems[idx]);
}
Run Code Online (Sandbox Code Playgroud)