使用LINQ获取两个值之间的整数倍数

hel*_*ker 4 c# linq sequence

好吧标题很丑,但问题很简单:

我有一个WPF控件,我想显示绘图线.我的"视口"有其限制,这些限制(例如,对象坐标中的底部和顶部值)是doubles.

所以我想在每个倍数绘制线条,比如说5.如果我的视口从-8.3到22.8,我会得到[-5, 0, 5, 10, 15, 20].

我想用LINQ,它似乎是天生的候选者,但找不到办法......

我想象这些方面的东西:

int nlines = (int)((upper_value - lower_value)/step);
var seq = Enumerable.Range((int)(Math.Ceiling(magic_number)), nlines).Select(what_else);
Run Code Online (Sandbox Code Playgroud)

给定值是(double)lower_value,(double)upper_value(int)step.

paq*_*mez 8

Enumerable.Range应该做的伎俩:

Enumerable.Range(lower_value, upper_value - lower_value)
          .Where(x => x % step == 0);
Run Code Online (Sandbox Code Playgroud)

  • 这仅适用于整数大小的步骤,对于大步长值而言效率极低.它也只对小于`int.MaxValue`的范围有效,并且完全在`int.MinValue`到`int.MaxValue`的范围内,它比`double`的范围更具限制性. (2认同)