0
私は2つのテーブルを持っています。 EndToEndおよびPartPort。私は、EndToEndの同じ行からPartPortAとPartportBのデータを取得し、それらとPartportを照会して、Partportテーブルの任意の行にある可能性のあるPartportから対応するPartGidを取得したいとします。これまではこれを行うことができましたが、2つの異なるLINQ呼び出しを行う必要がありますが、1つに減らしたいと思います。ここに私のコードは次のとおりです。2つのテーブルと複数の列を結合する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であるためです。両方の列に参加しようとしていますか? "icp.PartPortAはica.PortGidと等しく、icp.PartPortBはica.PortGidと等しい" – HaukurHaf
インテリセンスはそうではない – DeeTee
おそらく1つはnull可能なguidであり、もう1つはそうではないからです。(.Value null可能なGUID) – HaukurHaf