我有一个字符串列表,如:
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;
但它不起作用
答案 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)