Ich habe 2 Tabellen, die ich Spalten basierend auf CID greifen muss, die ClientID in beiden Tabellen ist. Mein Code unten funktioniert bei der Anzeige der Tabelle, aber _DOCID ist immer Null. Was vermisse ich?Linq2Sql Join in DefaultIfEmpty
public IQueryable ReturnCart(int cid)
{
try
{
var result = from c in veps.ecomCarts
join d in veps.lawFirmClientDocumentPurchaseds on c.ClientID equals d.ID into cd
from d in cd.DefaultIfEmpty()
where c.ClientID == cid
select new
{
_DOCID = d.ID,
_ID = c.ID,
_CID = c.ClientID,
_UPC = c.UPC,
_Description = c.Description,
_Quantity = c.Quantity,
_UnitPrice = c.UnitPrice,
_Discount = c.Discount,
_Total = c.Total,
_InProgress = c.InProgress,
_dts = c.dts
};
return result;
}
catch (Exception ex)
{
_IsError = true;
_ErrorMsg = ex.Message;
return null;
}
}
Aktualisiert Ausgabe Bild: enter image description here
"* basierend auf CID, die ** ClientID ** in ** beiden ** Tabellen *" ist. Aber innerhalb der Abfrage verwenden Sie 'auf c.ClientID gleich d.ID'. So wie es sein sollte? –
Sorry für den Tippfehler. Sollte lesen: Join d in veps.lawFirmClientDocumentPurchased auf c.ClientID gleich d.ClientID in cd – RooGuru
Ok, und Sie sagen, der korrigierte linke Join gibt immer Null für die rechte Seite zurück? Dies passiert normalerweise, wenn es keinen passenden Datensatz aus der "richtigen" Tabelle gibt (das ist der ganze Grund des linken äußeren Joins). Sind Sie sicher, dass Sie Daten in 'lawFirmClientDocumentPurchaseds' mit' ClientID' haben, die der übergebenen 'cid' entsprechen? –