我有两个清单{ 7 3 5 }
和{9 8 1}
.
我想排序我的第一个列表,我希望第二个列表具有与第一个列表给出的相同的索引排列.
{3 5 7}
=> {8 1 9}
是否可以在单个LINQ语句中执行此操作?
Jon*_*eet 41
听起来你可能想要:
var list1 = new List<int> { 7, 3, 5 };
var list2 = new List<int> { 9, 8, 1 };
var orderedZip = list1.Zip(list2, (x, y) => new { x, y } )
.OrderBy(pair => pair.x)
.ToList();
list1 = orderedZip.Select(pair => pair.x).ToList();
list2 = orderedZip.Select(pair => pair.y).ToList();
Run Code Online (Sandbox Code Playgroud)
Mat*_*hew 10
您可以尝试使用该Zip
方法:
var sortedPairs = list1
.Zip(list2, (item1, item2) => new KeyValuePair<int, int>(item1, item2))
.OrderBy(pair => pair.Key);
Run Code Online (Sandbox Code Playgroud)
然后你可以得到第一个排序列表:
var sortedList1 = sortedPairs.Select(pair => pair.Key);
Run Code Online (Sandbox Code Playgroud)
第二个列表:
var sortedList2 = sortedPairs.Select(pair => pair.Value);
Run Code Online (Sandbox Code Playgroud)