我有个号码。例如,我的号码是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))
}发布于 2016-11-11 08:34:35
有时候,我觉得旧的校规,没有花哨的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);
}发布于 2016-11-11 09:43:15
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范围。
发布于 2016-11-11 08:33:14
不要忘记将System.Interactive命名空间添加到使用块中。
https://stackoverflow.com/questions/40543877
复制相似问题