In order to populate a List<int>
with a range of numbers from 1 to n I can use:
for (i=1; i<=n; i++)
{
myList.Add(i);
}
Is there any way to achieve the same result by using LINQ inline expressions?
UPDATE
Assume I have a method getMonthName(i)
that given the integer returns the name of the month. Can I populate the list directly with month names somehow by using Enumerable
Enumerable.Range(1,12).Select(getMonthName);
You want to use Enumerable.Range
.
myList.AddRange(Enumerable.Range(1, n));
Or
myList = Enumerable.Range(1, n).ToList();
If you're asking this kind of question, you might want to look over the methods of System.Linq.Enumerable. That's where all this stuff is kept. Don't miss ToLookup
, Concat
(vs Union
), and Repeat
.
For the month names you can use Select()
:
var months = Enumerable.Range(1,n).Select(getMonthName);