假设我有一个清单{1,3,5,7,9,11}
我想使用像这样的代码浏览列表
foreach (int myInt in myIntList.OrderBy(...))
{
/// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
但是这里的顺序是1然后是11然后是3然后是9然后是5然后7.如何按顺序执行此操作?
我的实际情况稍微复杂一点,for循环看起来像这样:
foreach (Tuple<string, int, int, int> im in iconMappings.OrderBy(i => i.Item4).ThenByDescending(i => i.Item3))
{
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
因此,如上所述对它们进行排序我需要获得交替元素,因此理想情况下应该可以应用于此.
这给出了你想要的订单:
List<int> myIntList = new List<int>(new[] { 1, 3, 5, 7, 9, 11 });
var result = myIntList
.Select((v, i) => new { Value = v, Index = i })
.OrderBy(v => Math.Min(v.Index, Math.Abs((myIntList .Count - 1) - v.Index)))
.Select(v => v.Value);
Run Code Online (Sandbox Code Playgroud)
foreach (var v in result)
{
Console.WriteLine(v.ToString());
}
Run Code Online (Sandbox Code Playgroud)
得到:
1
11
3
9
5
7
Run Code Online (Sandbox Code Playgroud)