2013-10-28 67 views
0

是否可以在SelectList中連接表?ViewBag選擇列表LINQ表連接

以下是我有:

ViewBag.Clients = new SelectList(db.IPACS_Clients, "clientID", "name", 0); 

我需要加入db.IPACS_Clients_Network表,我還需要「clientID的」,但對「名」我需要能夠選擇IPACS_Clients.name +「 - 「+ IPACS_Clients_Network.name

這是可能與Viewbag?

+0

您可能需要首先在Linq語句中加入必要的表,然後將結果傳遞給SelectList構造函數。 –

+0

我會建議創建一個模型,其中包含您在每個選擇列表項中需要的所有屬性,並使用聯接來填充這些模型。我還建議你爲視圖本身創建一個'main'模型,該模型有一個名爲'ClientCollection'的屬性並將你的選擇列表分配給它。 – Silvermind

+1

@Silvermind:爲什麼所有的儀式?通常我會直接將SelectList放在ViewModel上作爲成員。 –

回答

0

雖然這種方式不建議,我能找到答案。

ViewBag.Clients = new SelectList(db.IPACS_Clients_Network 
     .Join(
      db.IPACS_Clients, 
      v => v.networkClientID, 
      s => s.networkClientID, 
      (v, s) => 
      new 
      { 
       v = v, 
       s = s 
      } 
     ) 
     .Select(
      temp0 => 
      new 
      { 
       v = temp0.v, 
       s = temp0.s 
      } 
     ).Select(m => new SelectListItem 
     { 
      Value = SqlFunctions.StringConvert((double)m.s.clientID).Trim(), 
      Text = m.v.name + " - " + m.s.name 
     }), "Value", "Text", 0);