konvertierte SQL -Abfrage mit mehreren Verbindungen, Zählen und linken Verbindungen zu Linq
konvertiert Ihre SQL -Abfrage verwendet mehrere Verbindungen, linke Verbindungen und Polymerisierungsfunktionen, um Daten aus mehreren Tabellen abzurufen. Folgen Sie die folgenden Schritte, um diese Abfrage in LinQ zu konvertieren:
sub -query konvertieren:
Diese verbesserte LINQ -Abfrage übernimmt die Zählfunktion und habe den Job prägnanter und effizienter gelassen und vermeiden einige potenzielle Probleme im ursprünglichen Code, wie das seltsame Urteil über
<code class="language-sql">SELECT DISTINCT c.Id, c.Title, COUNT(v.Id) AS 'Nb_V2', COUNT(DISTINCT v.IdUser) AS 'Nb_V1', r.cnt AS 'Nb_R' FROM TABLE_C c JOIN TABLE_V v on c.Id = v.Id LEFT JOIN ( SELECT Id, COUNT(*) AS cnt FROM TABLE_R GROUP BY Id ) r ON c.Id = r.Id WHERE c.IdUser = '1234' GROUP BY c.Id, c.Title, r.cnt</code>
null ist. Es spiegelt genauer die Logik der ursprünglichen SQL -Abfrage wider. Bitte beachten Sie, dass Sie sich entsprechend Ihrem Datenbankkontext und Ihrem physischen Namen , und
anpassen müssen.<code class="language-csharp">var qResult = (from c in dbContext.TABLE_C join v in dbContext.TABLE_V on c.Id equals v.Id from r in dbContext.TABLE_R.Where(r => r.Id == c.Id).DefaultIfEmpty() where c.IdUser == "1234" group new { c, v, r } by new { c.Id, c.Title } into grouped select new { IdC = grouped.Key.Id, Title = grouped.Key.Title, Nb_V2 = grouped.Count(g => g.v.Id != null), Nb_V1 = grouped.Select(g => g.v.IdUser).Distinct().Count(), Nb_R = grouped.Sum(g => (int?)g.r.cnt ?? 0) // 处理r.cnt可能为null的情况 }).Distinct();</code>
Das obige ist der detaillierte Inhalt vonWie kann ich eine komplexe SQL -Abfrage mit mehreren Verknüpfungen, Zählungen und einer linken Verbindung zu Linq übersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!