Kijk in het MoreLinq-project (op github):http://morelinq.github.io
Daar worden Lead en Lag geïmplementeerd als extensies:
public static IEnumerable<TResult> Lag<TSource, TResult>(
this IEnumerable<TSource> source,
int offset,
TSource defaultLagValue,
Func<TSource, TSource, TResult> resultSelector
)
referentie:https://morelinq.github.io/2.0/ref /api/html/M_MoreLinq_MoreEnumerable_Lag__2_1.htm
EDIT:Dit is alleen Linq to Objects. Dus wanneer toegepast op een SQL-gegevensbron, zou het alle rijen ophalen en vervolgens de berekening buiten de database uitvoeren. Dit is niet wat de OP verwacht.
Onderzoeksresultaten zeggen "nee , het is niet mogelijk" voor items 1,2,3 en 4:
LEAD
enLAG
kwam tot stand in SQL Server 2012, maar de hoogste versie van SQL Server waarop de nieuwste versie van Linq to SQL (Framework 4.6.1) is gericht met versiespecifieke code, is 2008:http://referencesource.microsoft.com/#System.Data.Linq/SqlClient/SqlProvider.cs,2fac3481a656764b /a>- Entiteitskader:nee, sorry.
- MSDN geeft aan dat sequentiefuncties over het algemeen beperkte ondersteuning hebben:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/bb882656(v=vs.100)
- Er is geen hint dat
SqlFunctions
zou leiden, vertraging of iets dergelijks:https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8