我需要根据每个列表中对象的不同属性找到两个列表共有的对象(一个列表中的对象具有 targetId 属性,我需要找到 targetId 与第一个列表中对象的 Id 匹配的所有对象。两个列表中的对象都有一系列其他不同的属性。
第一个列表将定义匹配对象的顺序 - 实际顺序无关紧要,只要两个列表的顺序相同。下面的示例 [pseudocode] 显示了我的意思,其中第二个列表按 TargetId 排序以匹配第一个列表中的 Id 顺序:
firstList = [{name: a, id:1}, {name: b, id:2}, {name: c, id:3}]
secondList = [{name: d, targetId: 2}, {name:e, targetId: 3}, {name: f, targetId: 1}]
sortedList = [{name: f, targetId: 1}, {name:d, targetId: 2}, {name: e, targetId: 3}]
我认为像下面这样的东西会起作用,但我得到一个序列不包含元素错误,即使我知道每个对象在另一个列表中都有一个匹配项。尝试就地排序,但没有成功。
List<object> firstList; // objects have an Id
List<object> secondList; // objects have a TargetId property
List<object> sortedList = new List<object>(); // the new list to store matched objects
foreach (object o in firstList) {
sortedList.Add(secondList.Where(x => x.TargetId == o.Id).First()); // should only return one object, but First() just in case
}
foreach (object o in sortedList) {
//do something with the ordered list
}