Let's say I have the following method, which accepts an IEnumerable and returns an IEnumerable. What implementation does the Linq query actually return? IEnumerable is an interface, and interfaces can't be instantiated, so under the hood it has to be making something. However if you inspect it after return it just looks like an IEnumerable, even at runtime.
public IEnumerable<SelectListItem> CreateDropdownList(IEnumerable<Release> releases)
{
return releases.Select(r =>
new SelectListItem {
Value = r.UniqRelease.ToString(),
Text = r.DescriptionOf
});
}