Ich versuche, eine Sql-Abfrage zu einem C# LINQ Join zu übernehmen. Ich habe es versucht, aber das konnte ich nicht erreichen. Diese entsprechende Abfrage in SQL arbeitet, wie sie ist:Wie wird eine bedingte Verknüpfung in Sql mit Linq in C# durchgeführt?
SELECT pj01.CLID from us20
INNER JOIN pj01 ON pj01.PJID =
(
CASE
WHEN (us20.BKNM = 'PJID')
THEN us20.BKID
WHEN (us20.BKNM = 'PSID')
THEN
(
SELECT PJID FROM pj02 WHERE CLID = us20.CLID AND PSID = us20.BKID
)
END
)
Mein Linq Versuch, der nicht funktioniert - Daten nicht kommen:
var result =
from us20 in Us20Repository.GetAll()
join pj01 in Pj01Repository.GetAll() on new
{
PJID =
(us20.BKNM == "PJID" ?
us20.BKID :
(
us20.BKNM == "PSID" ?
(
(from pj02 in Pj02Repository.GetAll()
where
pj02.CLID == us20.CLID &&
pj02.PSID == us20.BKID
select new
{
PJID = pj02.PJID
}).First().PJID
) :
""
)
)
} equals new { PJID = pj01.PJID }
select new
{
CLID = pj01.CLID
};
Wie kann ich das tun? Ist das möglich?
Sobald die Abfrage generiert wurde, können Sie den Mauszeiger über 'result' bewegen und uns die SQL-Anweisung zeigen, die generiert wird? – Rob
23.000 Zeilendaten (Daten = "100") in SQL-Abfragen, Linq: 0 –
Ich meinte das Ergebnis * vor * es wurde materialisiert. Es sollte Ihnen die SQL zeigen (rufen Sie 'ToList()' oder eine andere Materialisierungsmethode nicht auf). Lasse es als "IQueryable" und inspiziere es. – Rob