我想要遍历两个特定数字之间的所有数字(不包括0),并且我不想从最小到最大,或者从最大到最小,从最接近零到最远。
例如,如果我定义的数字是-4
和3
,那么我想按顺序复习这些数字:-1
、1
、-2
、2
、-3
、3
、-4
或D9、D10、D11、D12、D13、D14、D15(这两者中的哪一个无关紧要)。在其他语言中,我可以用foreach
循环做到这一点,我如何在C#中实现它,如果答案是我怀疑的foreach
循环,我如何为它构造列表?
例如,在Tcl中,我会这样做:
# num1 is the abs value of the negative limit
set l [list ]
for {set i 1} {$i <= [max $num1 $num2]} {incr i} {
if {$num1 >= $i} {
lappend l [expr -1 * $i]
}
if {$num2 >= $i} {
lappend l $i
}
}
foreach num $l {
puts $num
}
发布于 2013-03-21 18:01:49
您可以使用Linq根据函数的返回对列表进行排序。
foreach (int x in list.OrderBy(i=>Math.abs(i))
{
// Do Stuff
}
发布于 2013-03-21 18:01:44
List<int> values = new List<int>();
// Add items to list
// i.e. values.Add(-1);
values.Sort(delegate(int n1, int n2) { return math.Abs(n1).CompareTo(math.Abs(n2)); });
foreach(var num in values)
{
// Do work
}
发布于 2013-03-21 18:21:36
您选择的答案与您在问题中陈述的内容不匹配。
int a=-4, b=3;
var list=Enumerable.Range(1, Math.Max(Math.Abs(a), Math.Abs(b))).SelectMany(x => new[] { x, -x });
foreach(var num in list) {
Console.Write(" {0}", num);
}
然而,匹配你真正想要的更重要。我经常不能在第一时间正确地描述我的问题。
https://stackoverflow.com/questions/15554783
复制相似问题