我有一个整数列表(它被称为L1):{14,16,12}
我有一个对象列表(L2):
{
[name: 'a1', id: 5],
[name: 'a2', id: 16],
[name: 'a2', id: 8],
[name: 'a2', id: 14]
}
我想按照L1的顺序订购L2。
我试过了:
L2.OrderBy(Function(o) L1.IndexOf(o.id)).ToArray()
但我得到了:
{
[name: 'a1', id: 5],
[name: 'a2', id: 8],
[name: 'a2', id: 14],
[name: 'a2', id: 16]
}
这是因为在L1中找不到5和8,这就是indexOf
返回-1的原因。
如何按列表对其进行排序,并保留L2中以L1在同一顺序中找不到的其他项目?
更新 输出应该是: 14, 16, 5, 8
步骤:
step 1)
L1 -> first number is 14.
put 14 in the top:
14, 5, 16, 8.
step 2)
L1 -> second number is 16.
put 16 in the top (after 14):
14, 16, 5, 8.
step 3)
L1 -> third number is 12.
12 is not found in L2.
So the output is: 14, 16, 5, 8.
任何帮助表示赞赏!
答案 0 :(得分:2)
如果所有其他人都在改变他们的位置,我不确定您希望如何保留订购。但是,也许你的意思是使用旧索引作为后备值:
{{1}}
因此,这导致一个稳定的顺序,其中id不在id-list中的所有对象与id不在该列表中的其他对象相比保持其位置。