问题
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
回答1:
Enumerable.Range(1,12).Select(getMonthName);
回答2:
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
.
回答3:
For the month names you can use Select()
:
var months = Enumerable.Range(1,n).Select(getMonthName);
来源:https://stackoverflow.com/questions/9361598/populate-a-list-with-a-specific-range-of-numbers-by-using-linq