获得5的乘法范围

时间:2016-11-11 08:22:25

标签: c#

我有一个号码。例如,我的号码是19。然后我想用5的乘法范围填充我的下拉列表。所以我的下拉列表将包含以下项目: 1-5 6-10 11-15 16-19

我尝试过模数和除法,然而,我似乎无法获得范围。有固定的方法吗?

示例代码

List<string> range = new List<string>();
int number = 19;
int numOfOccur = (19/5);

for (int i = 1; i < numOfOccur ; i++)
{
range.Add(i + " - " + (i * 5))
}

3 个答案:

答案 0 :(得分:1)

有时我认为旧的学校代码,没有花哨的linq更清晰

int maximum = 19;
int multiple = 5;
int init = 1;
while (init + multiple <= maximum )
{
    string addToDDL = init.ToString() + "-" + (init + multiple - 1).ToString();
    Console.WriteLine(addToDDL);
    init += multiple;
}
if(init <= maximum)
{
    string last = init.ToString() + "-" + maximum.ToString();
    Console.WriteLine(last);
}

答案 1 :(得分:0)

Linq 解决方案(现代科技让我们能够把它搞定):

  int number = 19;
  int div = 5;

  List<string> range = Enumerable
    .Range(0, number / div + (number % div == 0 ? 0 : 1))
    .Select(i => $"{i * div + 1} - {Math.Min((i + 1) * div, number)}")
    .ToList();

测试

  Console.Write(string.Join(Environment.NewLine, range));

返回

  1 - 5
  6 - 10
  11 - 15
  16 - 19

使用模数算术时,不要忘记余数int numOfOccur = (19/5);行中有错误。它应该是

  int numOfOccur = 19 / 5 + (19 % 5 == 0 ? 0 : 1);  

要继续执行上一个不完整的 16 - 19范围。

答案 2 :(得分:-3)

  1. 将此包添加到您的项目中:https://www.nuget.org/packages/System.Interactive/

  2. 然后你可以这样做:

    let s1 = sum_vec(&v1);
  3. 不要忘记将System.Interactive命名空间添加到您的使用块。