2013-10-29 170 views
-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; 

但doesen't工作

+0

使用'排序依據OBJ。 FieldToSortBy select obj' –

+0

'object'不是'contextual keyword',它是一個標準關鍵字,所以請嘗試將'object'改爲像'obj'這樣的其他東西。 –

+0

你的定義是什麼不起作用?你是否遇到錯誤,或者預期的結果是什麼。 – Peter

回答

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 _order.IndexOf(o) 
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]);