【问题标题】:Rearrange a list based on given order in c#在c#中根据给定顺序重新排列列表
【发布时间】:2013-05-10 10:57:34
【问题描述】:

我有一个列表如下:

{CT, MA, VA, NY}

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

{2,0,1,3}

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

{VA, CT, MA, NY}

最好的方法是什么?使用linq有没有办法?

【问题讨论】:

  • LINQ 所有的东西!!!11111ONEONE。但说真的,仅仅因为你正在操作一个列表,并不意味着你应该使用 Linq。事实上,这个很简单,使用 Linq 可能会使它过于复杂
  • @cadrell0,虽然你的观点很好,但这个 Linq 并没有什么复杂的地方。

标签: c# .net linq list sorting


【解决方案1】:

您可以尝试以下方法:

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

【讨论】:

  • @weston 这个问题清楚地表明 - 这里没有假设:)
【解决方案2】:

这似乎是最简单的方法:

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

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 2015-02-27
    • 2020-10-29
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2018-06-01
    • 2016-08-26
    相关资源
    最近更新 更多