Ich bin auf der Suche nach Unterstützung bei der Konvertierung der folgenden SQL-Abfrage zu LINQ zu Entitäten in C#.Convert SQL Query (mit korrelierter Unterabfrage) zu LINQ in C#
SELECT f.FundId, u.UnitValue
FROM Fund f
INNER JOIN FundUnit u ON f.FundId= u.FundId
WHERE u.EffectiveDate = (SELECT MAX(effectivedate)
FROM FundUnit k
WHERE u.FundId = k.FundId)
AND f.Active = 1
ORDER BY f.FundId
Die Abfrage liest alle aktiven Fonds in der Datenbank zusammen mit ihrem letzten Einheitswert. Die Fondstabelle, die einen Datensatz für jeden Fonds enthält. Die Tabelle FundUnit enthält einen Einheitswertsatz für jeden Fonds pro Datum. Einheitenwerte für vorherige Daten verbleiben ebenfalls in der Tabelle, um einen Verlauf zu verwalten.
Nicht alle Fonds erhalten jeden Tag einen neuen Anteilswert, daher ist das letzte Datum des Inkrafttretens für alle Fonds nicht notwendigerweise gleich. Daher muss die Max-Funktion (Effektivdatum) auf die Einheitstabelle angewendet werden, die pro Fonds angewendet werden muss - daher die korrelierte Unterabfrage.
Dank
Sorry, ich sehe es ist linq zu Entitäten. Es gilt das gleiche Prinzip: http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx – Kell