2010-05-03 25 views
12

adını ve EF modelinin insanların soyadını etiketler. Bununla denedim:SelectList metin açıklamasında iki alanı nasıl birleştirebilirim? Ben seçilmiş bir listeye koymak istiyorum

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

ama "soyadı adı" adı verilen bir özellik olmadığından VS, bir hata döndürür. Seçim listesi etiketinde ad ve soyad nasıl bulunabilir?

sayesinde

cevap

40

böyle bir şey yapabileceğini:

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

Bu teknik aynı zamanda farklı bağlı nesnelerden özellikleri birleştirilmesine olanak sağlar. örneğin 'Tam Ad = s.Parent.Surname + s.Name' – Josh

26

time.Anagrafica_Dipendente için yeni bir özellik ekleme iki özellik concatenation temsil edecek:

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

ve sonra bu kullanmak :

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

Güncelleme:

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

ifade gövdeli özellikleri here hakkında daha fazla bilgi: C# 6.0 itibariyle mülkiyet daha kısaca olarak yazılabilir.

+1

çalışması için için,' Fullname' time.Anagrafica_Dipendente' 'üyesi olması gerekir. –

+0

Evet, doğru. Bunu belirtmeliydim. –

+0

Kendim, basit ve zarif olanı düşünemediğime inanamıyorum! – Ben

İlgili konular