我有一个ID数组的正确排序。然后我有一个具有ID属性的无序对象数组。使用linq匹配一个数组的顺序到另一个
我想通过匹配int数组顺序的ID对对象进行排序。
东西沿着
newObjectArray = oldObjectArray.MatchOrderBy(IdArray)
行最希望
我觉得我应该能够做到这一点使用LINQ,但我还没有找到一种方法。
我当前的方法似乎效率不高,因为它必须在集合的每个迭代上进行查询。我怀疑,性能会受到足够大的集合的影响。最终会发生什么。
这是我目前的执行:
//this is just dummy data to show you whats going on
int[] orderedIDs = new int[5] {5534, 5632, 2334, 6622, 2344};
MemberObject[] searchResults = MyMethodToGetSearchResults();
MemberObject[] orderedSearchResults = new MemberObject[orderedIDs.Count()];
for(int i = 0; i < orderedIDs.Count(); i++)
{
orderedSearchResults[i] = searchResults
.Select(memberObject => memberObject)
.Where(memberObject => memberObject.id == orderedIDs[i])
.FirstOrDefault();
}
你能告诉我们一些例如输入/输出吗? –
我在添加虚拟数据的问题中包含了示例输入。 int数组是ID的集合,searchResults是我的对象的集合。输出将是排序对象的集合,以便有ID符合int数组中ID的顺序。 – MichaelTaylor3D
哦,对,所以如果你有一个数组{-3,4,6}和有这些ID的对象,你想根据它们对它们进行排序? –