Sehen Sie sich das MoreLinq-Projekt an (auf Github):https://morelinq.github.io
Dort sind Lead und Lag als Erweiterungen implementiert:
public static IEnumerable<TResult> Lag<TSource, TResult>(
this IEnumerable<TSource> source,
int offset,
TSource defaultLagValue,
Func<TSource, TSource, TResult> resultSelector
)
Referenz:https://morelinq.github.io/2.0/ref /api/html/M_MoreLinq_MoreEnumerable_Lag__2_1.htm
BEARBEITEN:Dies ist nur Linq to Objects. Wenn es also auf eine SQL-Datenquelle angewendet wird, würde es alle Zeilen abrufen und dann die Berechnung außerhalb der Datenbank durchführen. Das ist nicht das, was das OP erwartet.
Forschungsergebnisse sagen „nein , es ist nicht möglich" für die Punkte 1,2,3 und 4:
LEADundLAGentstand in SQL Server 2012, aber die höchste Version von SQL Server, auf die die neueste Version von Linq to SQL (Framework 4.6.1) mit versionsspezifischem Code abzielt, ist 2008:https://referencesource.microsoft.com/#System.Data.Linq/SqlClient/SqlProvider.cs,2fac3481a656764b- Entitätsframework:Nein, tut mir leid.
- MSDN weist darauf hin, dass Sequenzfunktionen im Allgemeinen nur eingeschränkt unterstützt werden:https://docs.microsoft.com/en-us/ previous-versions/dotnet/netframework-4.0/bb882656(v=vs.100)
- Es gibt keinen Hinweis darauf, dass
SqlFunctionsLead, Lag oder ähnliches liefern würde:https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8