浮点范围的紧凑LINQ语法?

时间:2010-07-30 15:14:16

标签: c# .net linq

是否有紧凑,内置方式从minmax生成一系列具有给定step的浮点数?

例如:范围(10,20,1.1)[但是内置]。

2 个答案:

答案 0 :(得分:6)

你可以做到

Enumerable.Range(100, 100).Select(i => i / 10F)

但它不是很具描述性。

答案 1 :(得分:3)

不,内置任何东西。虽然编写静态方法真的很容易。类似的东西:

public static IEnumerable<float> FloatRange(float min, float max, float step)
{
    for (float value = min; value <= max; value += step)
    {
        yield return value;
    }
}

编辑:使用乘法的替代方法,如评论中所示:

public static IEnumerable<float> FloatRange(float min, float max, float step)
{
    for (int i = 0; i < int.MaxValue; i++)
    {
        float value = min + step * i;
        if (value > max)
        {
            break;
        }
        yield return value;
    }
}

MiscUtil中,由于Marc Gravell的通用运算符,我有一些范围代码可以做出时髦的东西,允许你:

foreach (float x in 10f.To(20f).Step(0.1f))
{
    ...
}