CiccioMiami
CiccioMiami

Reputation: 8256

Populate a list with a specific range of numbers by using LINQ

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

Upvotes: 40

Views: 34833

Answers (3)

rasmusvhansen
rasmusvhansen

Reputation: 1522

Enumerable.Range(1,12).Select(getMonthName);

Upvotes: 72

AlanT
AlanT

Reputation: 3663

For the month names you can use Select():

var months = Enumerable.Range(1,n).Select(getMonthName);

Upvotes: 3

Amy B
Amy B

Reputation: 110071

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.

Upvotes: 40

Related Questions