2013-10-28 45 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);