c# - How to use Display Text property in SelectList -


is there better way of using value , text properties of selectlist i'm doing in following view? feel i'm doing work should be.

note: i'm aware of other ways of using dropdowns value , text. question related on how achieve same while using selectlist

... var customerslist = _context.customers.select(c => new selectlistitem { value = c.lastname, text = c.fullname });  myviewmodel.lstcustomers = new selectlist(customerslist , "value", "text"); ... return view(myviewmodel); 

i found similar methods here , here.

the htmlhelper methods generating <select> element (@html.dropdownlistfor() etc) expect ienumerable<selectlistitem> 1 of parameters, therefore lstcustomers should ienumerable<selectlistitem>

public ienumerable<selectlistitem> lstcustomers { get; set; } 

you first line of code

var customerslist = _context.customers.select(c => new selectlistitem { value = c.lastname, text = c.fullname }); 

is generating that, required is

myviewmodel.lstcustomers = customerslist; 

you use of new selectlist(customerslist , "value", "text"); creating identical ienumerable<selectlistitem> first 1 , unnecessary overhead. (selectlist is ienumerable<selectlistitem> , wrapper around provide constructors generate collection).

if want use selectlist constructor change code to

var customerslist = _context.customers; myviewmodel.lstcustomers = new selectlist(customerslist , "lastname", "fullname"); 

both generate same output. difference between methods selectlist constructor uses reflection determine properties use options value , display text, fractionally slower, , uses 'magic strings' not typed. benefit little less verbose.


Comments

Popular posts from this blog

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

python Tkinter Capturing keyboard events save as one single string -

sql server - Why does Linq-to-SQL add unnecessary COUNT()? -