C# 如何生成增量为0.50的序列

C# 如何生成增量为0.50的序列,c#,C#,我有一系列的数字,比如1,2,3,4,5,6,7,8,9,10 我想生成一个增量为0.5的序列 结果应该是0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,依此类推 有没有什么简单的方法可以用数学来计算它。round和数学。round这是不可能的。但是: double x = 0; while(true) yield return x += 0.5; public static IEnumerable<float> Serie() { float va

我有一系列的数字,比如1,2,3,4,5,6,7,8,9,10 我想生成一个增量为0.5的序列 结果应该是0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,依此类推


有没有什么简单的方法可以用数学来计算它。round

数学。round
这是不可能的。但是:

double x = 0;
while(true) yield return x += 0.5; 
public static IEnumerable<float> Serie()
{
   float val = 0f;
   while (true)
   {
      val += 0.5;
      yield return val;
   }  
}
公共静态IEnumerable系列()
{
float val=0f;
while(true)
{
val+=0.5;
收益率;
}  
}

警告:该方法不适用,请务必小心(f.e调用
ToList()
不是一件好事)。您还可以传递可选参数来限制结果。

我认为您不需要math.round

IEnumerable<int> numbers = Enumerable.Range(1, 10);
List<decimal> result = numbers.Select(x => (decimal)x / 2).ToList();
IEnumerable numbers=可枚举范围(1,10);
列表结果=数字。选择(x=>(十进制)x/2.ToList();

List result2=数字。选择(x=>(十进制)x+0.5m)。ToList();

无论您的规则是什么,您都可以使用以下方法。此方法需要一个
IEnumerable
作为输入,然后返回一个
IEnumerable
,其中一半合并到其中

IEnumerable<double> GetListWithHalfs(IEnumerable<int> inputList)
{
    IEnumerable<double> halfList = inputList.Select(i => i - 0.5);
    return inputList.Zip(halfList, (full, half) => new double[] { half, full }).SelectMany(d => d);
}

循环的
。。。i*0.5
不需要数学。圆形你应该解释更多你想要实现的目标,例如,你有数字2。您希望应用什么规则来获取1.5、2.0、2.5或其他任何内容?抱歉,我正在更新我的问题。在我的数据库表xyz中有两个字段abc和pqr。abc是1,2,3,4,5,6,7,8,pqr是12.11,13.13,14.12,15.12,16.14,17.12,18.21,19.12。现在我希望以.5的增量获取记录。例如,如果1是12.11,1.5,那么avgof pqr为1和2。并希望执行此linq查询。请帮助不确定此查询被否决的原因。。。我已经反击了。也不知道为什么。谢谢不置可否的唐沃斯人才华横溢:)
IEnumerable<double> GetListWithHalfs(IEnumerable<int> inputList)
{
    IEnumerable<double> halfList = inputList.Select(i => i - 0.5);
    return inputList.Zip(halfList, (full, half) => new double[] { half, full }).SelectMany(d => d);
}
IEnumerable<int> originalList = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
IEnumerable<double> includingHalfs = GetListWithHalfs(originalList);

foreach(var number in includingHalfs)
    Console.WriteLine(number);
var inputList = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var result = inputList.Zip(inputList.Select(i => i - 0.5), (full, half) => new double[] { half, full }).SelectMany(d => d);