在列表中创建范围

我的价目表为

10
21
30
90
100
150
400

我想以低于100的10增量添加价格。高于100以100的增量显示

所以我的最终价格清单会是

10
20
30
40
50
60
70
80
90
100
200
300
400

任何人都做了类似的事情。任何帮助或建议,将不胜感激。

预先感谢

fangjin16 回答:在列表中创建范围

对于要生成'n'个元素还是要生成直到列表中的最大值,有些不清楚。

情况1:如果生成直到列表中的最大值

http://players.brightcove.net/pages/v1/index.html?accountId=6021289027001&playerId=default&videoId=6075281345001&mode=iframe

您现在可以将方法用作

public IEnumerable<int> Generate(int maxValue)
{
    var currentValue = 0;
    while(currentValue<maxValue)
    {
        currentValue += currentValue < 100 ? 10:100;
        yield return currentValue;
    }
}

案例2:当您要生成N个元素时。

var myList = new List<int>(new int[] { 12,21,30,90,100,150,404 });
var result = Generate(myList.Max());

Enumerable.Range有助于在指定范围内生成序列

对于var initialValue = 0; var list = Enumerable.Range(1,totalNumberOfExpectedItems) .Select(x=> { initialValue = initialValue < 100 ? initialValue + 10 : initialValue + 100; return initialValue; })

输出

totalNumberOfExpectedItems = 13
,

我相信以下程序可以按您的意愿工作:

using System;
using System.Linq;

namespace csharp
{
    class Program
    {
        static void Main(string[] args)
        {
            var prices = new int[]{10,400}.ToList();
            var finalPriceList =
                Enumerable
                .Range(0,10)
                .Select(i => prices.Min() + 10 * i)
                .TakeWhile(i => i < Math.Min(100,prices.Max()))
                .Concat(
                    Enumerable
                    .Range(1,1000)
                    .Select(i => 100 * i)
                    .TakeWhile(i => i <= prices.Max())
                ).ToList();
            Console.WriteLine(string.Join(",",finalPriceList));
        }
    }
}

它打印:

10,20,40,50,60,70,80,200,300,400
,

尝试一下...

我假设您正在获取列表中最低值和最高值之间的所有值。

List<int> myList = new List<int>(new int[] { 12,404 });
int max = myList.Max() - myList.Max() % 100;
int min = myList.Min() - myList.Min() % 10;

int tmp = (int)Math.Round(Math.Log10(min),MidpointRounding.ToZero);
List<int> newList = new List<int>();
for (int a = tmp,b = min / (int)Math.Pow(10,tmp); (Math.Pow(10,a) * b <= max); )
{
     newList.Add((int)(Math.Pow(10,a) * b));
     if (b < 9) b++;
     else
     {
         b = 1;
         a++;
     }
}

//newList : [10,400]
本文链接:https://www.f2er.com/3140736.html

大家都在问