Упорядочить список объектов по значению совпадения в другом списке - PullRequest
0 голосов
/ 13 мая 2018

У меня есть два (почти всегда) одинаковых списка, сделанные из объектов различного типа, но с некоторыми общими свойствами (и всегда уникальными значениями):

List<Object1> list1 = new List<Object1>();
List<Object2> list2 = new List<Object2>();

Затем мне нужно заказать list2 на основепорядок совпадений по свойству с list1.

Пример:

list1:

0, "FMS", prop2, prop3; 
1, "KFF", prop2, prop3; 
2, "FOA", prop2, prop3;
3, "RDA", prop2, prop3;
4, "KFP", prop2, prop3; 

list2:

Before:
991, prop1, "RDA", prop2, prop3, etc; 
992, prop1, "FMS", prop3, prop4, etc;
993, prop1, "KFF", prop3, prop4, etc;
994, prop1, "KFP", prop3, prop4, etc;
995, prop1, "FOA", prop3, prop4, etc;

After:
992, prop1, "FMS", prop3, prop4, etc;
993, prop1, "KFF", prop3, prop4, etc;
995, prop1, "FOA", prop3, prop4, etc;
991, prop1, "RDA", prop3, prop4, etc;
994, prop1, "KFP", prop3, prop4, etc;

Мне нужно что-то вроде

list2.OrderBy(x => Where(list1.prop1 == list2.prop2))

Надеюсь, это достаточно ясно.

1 Ответ

0 голосов
/ 13 мая 2018

Использование FindIndex:

list2.OrderBy(x => list1.FindIndex(y => y.prop1 == x.prop2));

Обратите внимание, что если не найдено ни одного элемента, соответствующего предикату, вы получите -1 обратно, поэтому все эти элементы будут накапливатьсявверху (конечно, вы можете написать код, чтобы полностью их игнорировать, или сложить внизу, или как угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...