Существует немного неясности относительно того, хотите ли вы генерировать элементы 'n' или хотите ли вы генерировать до максимального значения в списке.
Случай 1: Если генерировать доМаксимальное значение в списке
public IEnumerable<int> Generate(int maxValue)
{
var currentValue = 0;
while(currentValue<maxValue)
{
currentValue += currentValue < 100 ? 10:100;
yield return currentValue;
}
}
Теперь вы можете использовать метод как
var myList = new List<int>(new int[] { 12, 21, 30, 90, 100, 150, 404 });
var result = Generate(myList.Max());
Случай 2: когда вы хотите сгенерировать N элементов.
var initialValue = 0;
var list = Enumerable.Range(1,totalNumberOfExpectedItems)
.Select(x=>
{
initialValue = initialValue < 100 ? initialValue + 10 : initialValue + 100;
return initialValue;
})
Enumerable.Range помогает при генерации последовательности в указанном диапазоне
Для totalNumberOfExpectedItems = 13
,
Выход
10
20
30
40
50
60
70
80
90
100
200
300
400