我想以这样的方式迭代一些列表项,即从特定位置开始,然后从它向左走,然后从它向右走。
换句话说,是这样的:
var items = new List<string>() { "Item1", "Item2", "Item3", "Item4", "Item5" };
string item = "Item3";
int index = items.IndexOf(item);
for (int i = index; i >= 0; i--)
yield return items[i];
for (int i = index + 1; i < items.Count; i++)
yield return items[i];
Run Code Online (Sandbox Code Playgroud)
结果是:Item3
, Item2
, Item1
, Item4
,Item5
有没有一种方法可以实现这一目标,但只使用一个 for 循环?
或者 LINQ 中有某种条件方向吗?
Pet*_*den 10
您可以使用三元 if 和索引上的一些简单算术来实现此目的。
for (int i = 0; i < items.Count; i++)
yield return i <= index ? items[index - i] : items[i];
Run Code Online (Sandbox Code Playgroud)
结果:
Item3
Item2
Item1
Item4
Item5
Run Code Online (Sandbox Code Playgroud)