Ich habe zwei Tabellen; EndToEnd und PartPort. Ich möchte die PartPortA- und PartportB-Daten aus derselben Zeile in EndToEnd abrufen und Partport mit ihnen abfragen und ihr entsprechendes PartGid von Partport abrufen, das in einer beliebigen Zeile in der Partport-Tabelle enthalten sein könnte. Bisher bin ich dazu in der Lage, aber ich muss zwei verschiedene LINQ-Aufrufe machen, aber ich möchte es auf eins reduzieren. Hier ist mein Code:C# Linq Anweisung, zwei Tabellen und mehrere Spalten zu verbinden
// 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);
Was ich tun möchte, und ich habe bereits versucht, bekam aber einen Fehler, ist dies:
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();
Der Fehler, den ich bekommen ist:
Guid? EndToEnd.PartPortB
Error:
Operator '&&' cannot be applied to operands of type 'System.Guid' and 'System.Guid?'
„auf icp.PartPortA && icp.PartPortB gleich ica.PortGid“ ist nicht Korrekt, es ist kein gültiger boolescher Ausdruck, da icp.PartPortA eine GUID und kein boolescher Wert ist. Versuchen Sie, sich beiden Spalten anzuschließen? Dann versuchen Sie dies stattdessen: "auf icp.PartPortA entspricht ica.PortGid && icp.PartPortB gleich ica.PortGid" – HaukurHaf
Intellisense scheint nicht zu mögen – DeeTee
Wahrscheinlich, weil man eine Nullable Guid ist und das andere ist nicht ... (Use .Value nullbare Guid) – HaukurHaf