2010-05-03 2 views
12

Voglio mettere in una lista selezionata le etichette il nome e il cognome delle persone di un modello EF. Ho provato con questo:Come posso combinare due campi in una descrizione del testo di SelectList?

public ActionResult Insert() 
     { 
      ViewData["accountlist"] = new SelectList(time.Anagrafica_Dipendente.ToList(), "ID_Dipendente", "Surname Name", null);    
      Giustificativi g = new Giustificativi(); 
      return View(g); 
     } 

ma VS restituisce un errore, perché non c'è un attributo chiamato "nome cognome". Come posso concatenare il nome e il cognome nell'etichetta di selezione?

grazie

risposta

40

si potrebbe fare qualcosa di simile:

ViewData["accountlist"] = 
    new SelectList((from s in time.Anagrafica_Dipendente.ToList() select new { 
     ID_Dipendente=s.ID_Dipendente, 
     FullName = s.Surname + " " + s.Name}), 
     "ID_Dipendente", 
     "FullName", 
     null); 
+1

Questa tecnica consente anche di combinare proprietà di oggetti collegati diversi. ad es. 'FullName = s.Parent.Surname + s.Name' – Josh

26

aggiungere una nuova proprietà a time.Anagrafica_Dipendente che rappresenterà la concatenazione delle due proprietà:

public string Fullname 
{ 
    get 
    { 
     return string.Format("{0} {1}", Surname, Name); 
    } 
} 

e quindi utilizzare questo :

ViewData["accountlist"] = new SelectList(
    time.Anagrafica_Dipendente.ToList(), 
    "ID_Dipendente", 
    "Fullname", 
    null 
); 

Aggiornamento: Come di C# 6.0, la proprietà può essere più conciso scritto come:

public string Fullname => string.Format("{0} {1}", Surname, Name); 

Ulteriori informazioni sulle proprietà di espressione di corpo here.

+1

Per far sì che funzioni,' Fullname' dovrebbe essere un membro di 'time.Anagrafica_Dipendente'. –

+0

Sì, è corretto. Avrei dovuto specificare questo. –

+0

Non posso credere che non potrei pensare a me stesso, semplice ed elegante, lo adoro! – Ben