我遇到一个问题,这涉及到使用linq查询做的外键。就像这样,我有2个桌子,“站”和“位置”。它们使用其主要链接到另一个表“locationstation”。我需要从“站”表和“位置”表中的位置捕获站名。
这是我用来连接所有3个表并在数据网格视图中显示它的代码。
private void Create_LS_Load(object sender, EventArgs e)
{
using (testEntities Setupctx = new testEntities())
{
var storeStation = (from SLS in Setupctx.locationstations
join station s in Setupctx.stations on SLS.idStation equals s.idstations
select s.Station1).Distinct().ToList();
foreach (var LocationStation in storeStation)
{
cbStation.Items.Add(LocationStation);
}
var storeLocation = (from SLS in Setupctx.locationstations
join location l in Setupctx.locations on SLS.idLocation equals l.idlocation
select l.Location1).Distinct().ToList();
foreach (var LocationStation1 in storeLocation)
{
cbLocation.Items.Add(LocationStation1);
}
}
}
完成显示到数据网格视图后,我将工作站名称和位置名称绑定到2个相应的组合框中。这是我绑定的代码。
string selectStation = cbStation.SelectedItem.ToString();
string selectLocation = cbLocation.SelectedItem.ToString();
之后,我需要使用组合框选择工作站和位置来创建新的“locationstation”。我怎么做? “locationstation”下的列名仍然是“station”和“location”的id如何实际创建新的locationstation?我迷路了。
任何帮助将不胜感激。
答案 0 :(得分:0)
你很接近 - 你只需要在完成时抓住整个所选对象 - 而不仅仅是字符串名称:
Station selectedStation = cbStation.SelectedItem as Station;
Location selectedLocation = cbLocation.SelectedItem as Location;
现在,您可以访问该对象上的所有必要属性 - 您可以提取Name
,ID
以及构建新实体(或实体)可能需要的任何其他内容。