C# ViewBag选择列表LINQ表联接
可以在SelectList中联接表吗 以下是我所拥有的: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是否可以这样做?虽然不建
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我能够理解它。谢谢你的信息。