You could create a new anonymous class using a simple LINQ projection, and then use the SelectList(IEnumerable, string, string)
constructor overload to specify the value and text fields to be used for the <option>
elements i.e.:
var stands =
db.Stands
.Where(s => s.ExhibitorID == null)
.Select(s => new
{
StandID = s.StandID,
Description = string.Format("{0}-- £{1}", s.Description, s.Rate)
})
.ToList();
ViewBag.StandID = new SelectList(stands, "StandID", "Description")
Edit
In C#6 and later, string interpolation makes for better reading than string.Format
...
Description = $"{s.Description}-- £{s.Rate}"
If you project to a strong ViewModel
class name (instead of to an anonymous class), you will undoubtedly want to replace the magic strings with the safety of the nameof
operator:
ViewBag.StandID = new SelectList(stands, nameof(Stand.StandID), nameof(Stand.Description));
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…