假设我有两个点,int x1, x2
哪里x1
可以更大,更小或相等x2
.我想生成这两个点之间的所有整数(包括开头x1
和结尾x2
),或者只是x1
两个点相等的值.是否有任何优雅的方式来生成IEnumerable
这些值?
您可以使用此迭代器块:
IEnumerableCreateRange(int x1, int x2) { var increment = x2 > x1 ? 1 : -1; for (var i = x1; i != x2; i += increment) yield return i; yield return x2; }
它是高效的,创建一个范围就像使用一样干净Enumerable.Range
:
CreateRange(10, 5).Select( ... )