|You're looping through the rooms, but you're overwriting the
EastSouth list each time.
You're also passing a
string as the only parameter to the
SelectList constructor. This will call the SelectList(IEnumerable)[^] overload, which will create a list item for each character in the string.
Change your code to pass the list of rooms to the
SelectList constructor, along with the name of the property which contains the value and the text:
var AvailRoom = db.Rooms
.Where(s => s.IsOccupied == false)
.Where(s => s.RoomNum > 101 && s.RoomNum < 126)
ViewBag.EastSouth = new SelectList(AvailRoom, "RoomNum", "RoomNum");
"These people looked deep within my soul and assigned me a number based on the order in which I joined."