-2

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

    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;

但它不起作用

4

2 回答 2

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]);
于 2013-10-29T10:29:46.743 回答
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)
于 2013-10-29T10:35:29.957 回答