我有一个号码。例如,我的号码是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))
}
答案 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)
将此包添加到您的项目中:https://www.nuget.org/packages/System.Interactive/
然后你可以这样做:
let s1 = sum_vec(&v1);
不要忘记将System.Interactive命名空间添加到您的使用块。