从另一个列表对列表进行排序
本文关键字:列表 排序 另一个 | 更新日期: 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)