如何通过对象中的一个列表对另一个列表进行排序?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (46)

我想按一个列表排序另一个列表。我使用以下命令添加到列表中:

ListClass.Add(new item_util(items[b], util[b]));

现在,基于上面的主题,我可以通过升序对项进行排序:

List<item_util> SortedList = ListClass.OrderBy(o=>o.items).ToList();

我不想对升序排序。如何根据另一个列表(LISTA)对项目进行排序?

int[] items = {7,4,1};
int[] util = {5,11,20};
var listA = new List<int> {5,4,1,2,7,3,8,6};
List<item_util> ListClass= new List<item_util>();
for (int b = 0; b < items.Length; b++)
   {
      ListClass.Add(new item_util(items[b], util[b]));
   }
List<item_util> SortedList = ListClass.OrderBy(o => o.item).ToList();

目前SortedList输出等于:{(1,20),(4,11),(7,5)}

但我想根据listA对列表进行排序。因此必须获得输出为:{(4,11),(1,20),(7,5)}

因为它们被布置在作为ListA:{5,41,2,7,3,8,6}

提问于
用户回答回答于

试试:

using System;
using System.Linq;

namespace CustomSortDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var listA = new[] { 5, 4, 1, 2, 7, 3, 8, 6 };
            var listClass = new[] { (1, 20), (4, 11), (7, 5) };

            foreach (var item in listClass.OrderBy(i => Array.IndexOf(listA, i.Item1)))
                Console.WriteLine(item);
        }
    }
}

List<item_util> SortedList = ListClass.
  OrderBy(o => Array.IndexOf(listA, o.PropertyOfTheValueInitem_utilFromItemsArray)).ToList();
用户回答回答于

给你提供新想法,并生成你想要的输出:

    var listA = new int [] {5,4,1,2,7,3,8,6};
    var listB = new List<ListClass>
    {
        new ListClass(1,20),
        new ListClass(4,11),
        new ListClass(7,5)
    };
    var results = listB.OrderBy
        (
            p => Array.IndexOf(listA, p.X)
        );
    foreach (var r in results) Console.WriteLine("{0},{1}", r.X, r.Y);

结果:

4,11
1,20
7,5

单击此链接查看DotNetFiddle实例(https://dotnetfiddle.net/sBesPx)

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问5 回答
  • Dingda

    Dingda · 站长 (已认证)

    4 粉丝0 提问3 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券