从另一个列表对列表进行排序

本文关键字:列表 排序 另一个 | 更新日期: 2023-09-27 18:37:11

我有一个字符串列表,如下所示:

    private List<string> __order= new List<string>()
    {
        "M",
        "W",
        "6",
        "PPT",
        "TEA",
        "MH",
        "CLI",
        "BL",
        "GI"
    };

我有一个对象列表,我想按它们的属性之一对其进行排序。我尝试了类似的东西

            var t = from o in _ordre
                join object in listObjects
                on o equals object.Field
                select object;

但它不起作用

从另一个列表对列表进行排序

我认为这就是你想要的:

var t = listObjects.OrderBy(o=>__order.IndexOf(o.Field));

但是,我会像这样为__order使用Dictionary

var __orderDict = __order.Select((e,i)=>new {e,i}).ToDictionary(key=>key.e, value=>value.i);
var t = listObjects.OrderBy(o=>__orderDict[o.Field]);

你可以做这样的事情:

// assuming some type for your other list
class MyObject { public string Id { get; set; } }
List<string> _order = new List<string>();
List<MyObject> _objects = new List<MyObject>();
var orderedList = from o in _order
                  join obj in _objects
                  on o equals obj.Id
                  orderby o
                  select obj;

或者,如果您希望按_order中项目的相同顺序(即按索引)排序,则可以修改 orderby 子句:

orderby _order.IndexOf(o)