Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ViewBag选择列表LINQ表联接_C#_Asp.net Mvc_Linq_Razor - Fatal编程技术网

C# ViewBag选择列表LINQ表联接

C# ViewBag选择列表LINQ表联接,c#,asp.net-mvc,linq,razor,C#,Asp.net Mvc,Linq,Razor,可以在SelectList中联接表吗 以下是我所拥有的: ViewBag.Clients = new SelectList(db.IPACS_Clients, "clientID", "name", 0); 我需要加入db.IPACS\u Clients\u Network表,我仍然需要“clientID”,但对于“name”,我需要能够选择IPACS\u Clients.name+“-”+IPACS\u Clients\u Network.name 使用Viewbag是否可以这样做?虽然不建

可以在SelectList中联接表吗

以下是我所拥有的:

ViewBag.Clients = new SelectList(db.IPACS_Clients, "clientID", "name", 0);
我需要加入db.IPACS\u Clients\u Network表,我仍然需要“clientID”,但对于“name”,我需要能够选择IPACS\u Clients.name+“-”+IPACS\u Clients\u Network.name


使用Viewbag是否可以这样做?

虽然不建议使用这种方式,但我还是找到了答案

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);

虽然不推荐这种方法,但我还是找到了答案

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);

您可能需要首先在Linq语句中联接必要的表,并将结果传递给SelectList构造函数。我建议创建一个模型,该模型具有每个SelectList项所需的所有属性,并使用联接来填充这些模型。我还建议您为视图本身创建一个“main”模型,该模型有一个名为
ClientCollection
的属性,并将您的selectlist分配给该属性。@Silvermind:为什么要这么做?通常情况下,我只是将SelectList作为成员直接放在ViewModel上。@RobertHarvey这就是我的意思,但可能还不够清楚。结果将是视图上的某种东西,如
Model.ClientCollection
,它将是一个
SelectList
,但可能
Model.ClientDataSelectList
会更好地描述它。@RobertHarvey我能够理解它。感谢您提供的信息。您可能需要首先在Linq语句中联接必要的表,并将结果传递给SelectList构造函数。我建议创建一个模型,该模型具有每个SelectList项所需的所有属性,并使用联接来填充这些模型。我还建议您为视图本身创建一个“main”模型,该模型有一个名为
ClientCollection
的属性,并将您的selectlist分配给该属性。@Silvermind:为什么要这么做?通常情况下,我只是将SelectList作为成员直接放在ViewModel上。@RobertHarvey这就是我的意思,但可能还不够清楚。结果将是视图上的某种东西,如
Model.ClientCollection
,它将是一个
SelectList
,但可能
Model.ClientDataSelectList
会更好地描述它。@RobertHarvey我能够理解它。谢谢你的信息。