Titta in i MoreLinq-projektet (på github):http://morelinq.github.io
Där implementeras Lead och Lag som tillägg:
public static IEnumerable<TResult> Lag<TSource, TResult>(
this IEnumerable<TSource> source,
int offset,
TSource defaultLagValue,
Func<TSource, TSource, TResult> resultSelector
)
referens:https://morelinq.github.io/2.0/ref /api/html/M_MoreLinq_MoreEnumerable_Lag__2_1.htm
EDIT:Detta är endast Linq to Objects. Så när den applicerades på en SQL-datakälla skulle den hämta alla rader och sedan göra beräkningen utanför databasen. Detta är inte vad OP förväntar sig.
Forskningsresultat säger "nej , det är inte möjligt" för punkterna 1,2,3 och 4:
LEAD
ochLAG
kom till i SQL Server 2012, men den högsta versionen av SQL Server som den senaste versionen av Linq till SQL (Framework 4.6.1) riktar sig till med versionsspecifik kod, är 2008:http://referencesource.microsoft.com/#System.Data.Linq/SqlClient/SqlProvider.cs,2fac364761a- Enhetsramverk:nej, förlåt.
- MSDN antyder att sekvensfunktioner i allmänhet har begränsat stöd:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/bb882656(v=vs.100)
- Det finns ingen antydan om att
SqlFunctions
skulle ge Lead, Lag eller något liknande:https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8