0
我有两个表; EndToEnd和PartPort。我想从EndToEnd中的同一行中获取PartPortA和PartportB数据,并使用它们查询Partport,并从Partport中获取其可能位于Partport表中任何行的PartGid。到目前为止,我可以做到这一点,但我必须做两个不同的LINQ调用,但我想将其降低到一个。这里是我的代码:C#Linq语句加入两个表和多列
// this demonstrates how to join two tables, however only works for one AssetportGid at a time
var part_portGid_a_results = (from icp in entities.EndToEnd
where icp.IntertPortGidA != null &&
icp.IntertPortGidB != null
join ica in entities.PartPort
on icp.PartPortA equals ica.PortGid
select new { icp.PartPortA, ica.PartGid, }).ToList();
var part_portGid_b_results = (from icp in entities.EndToEnd
where icp.IntertPortGidA != null &&
icp.IntertPortGidB != null
join ica in entities.PartPort
on icp.PartPortB equals ica.PortGid
select new { icp.PartPortA, ica.PartGid, }).ToList();
return Json(part_portGid_a_results, JsonRequestBehavior.AllowGet);
我想什么做的,我已经尝试过,但得到的错误是这样的:
var part_portGid_a_results = (from icp in entities.EndToEnd
where icp.IntertPortGidA != null &&
icp.IntertPortGidB != null
join ica in entities.PartPort
on icp.PartPortA && icp.PartPortB equals ica.PortGid
select new { icp.PartPortA, ica.PartGid, }).ToList();
我得到的错误是:
Guid? EndToEnd.PartPortB
Error:
Operator '&&' cannot be applied to operands of type 'System.Guid' and 'System.Guid?'
链接行“上icp.PartPortA && icp.PartPortB等于ica.PortGid”不正确,它不是一个有效的布尔表达式,因为icp.PartPortA是一个Guid,而不是布尔值。你是否想加入两个栏目?然后试试这个,而不是:“on icp.PartPortA等于ica.PortGid && icp.PartPortB等于ica.PortGid” – HaukurHaf
智能感知似乎不喜欢那 – DeeTee
可能是因为一个是可以为空的GUID,另一个不是...(使用.Value可空的guid) – HaukurHaf