从另一个列表中排序列表

时间:2013-10-29 10:20:05

标签: c# linq sorting

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

    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;

但它不起作用

2 个答案:

答案 0 :(得分:1)

我认为这就是你想要的:

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

但是我会Dictionary使用__order,如下所示:

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

答案 1 :(得分:0)

你可以这样做:

// 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)