按长列表排序对象列表

时间:2012-10-03 16:57:32

标签: c#

我有一个类似的类模型:

public class MyModel
{
   long MyModelID { get; set; }
}

我有一个名为MyModel的{​​{1}}个对象列表和一个名为TheListOfModels的长整数列表:我希望TheListOfIDs的排序方式与{{1}相同}}

我想到的是一个遍历TheListOfModels的循环,并且在每次迭代时将相应的TheListOfIDs添加到名为TheListOfIDs的新列表中,然后将该列表重新分配给原始列表TheListOfModels

这是最好的方法吗?还是有针对此特定操作的linq语法?

感谢。

2 个答案:

答案 0 :(得分:3)

这样做:

var q = (from i in TheListOfIDs
        join m in TheListOfModels on i equals m.MyModelID
        select m).ToList();

答案 1 :(得分:1)

这个效率不高,但它可以解决问题:

List<Model> models = ...
List<long> ids = ...

var dic = models.ToDictionary(x => x.ID, x => x);
var modelsByIds = ids.Select(x => dic[x]).ToList();