Sehen Sie sich das MoreLinq-Projekt an (auf Github):http://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:
LEAD
undLAG
entstand 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:http://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
SqlFunctions
Lead, Lag oder ähnliches liefern würde:https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8