Kig ind i MoreLinq-projektet (på github):http://morelinq.github.io
Der er Lead og Lag implementeret som udvidelser:
public static IEnumerable<TResult> Lag<TSource, TResult>(
this IEnumerable<TSource> source,
int offset,
TSource defaultLagValue,
Func<TSource, TSource, TResult> resultSelector
)
reference:https://morelinq.github.io/2.0/ref /api/html/M_MoreLinq_MoreEnumerable_Lag__2_1.htm
EDIT:Dette er kun Linq to Objects. Så når den blev anvendt på en SQL-datakilde, ville den hente alle rækker og derefter udføre beregningen uden for databasen. Det er ikke, hvad OP forventer.
Forskningsresultater siger "nej , det er ikke muligt" for punkt 1,2,3 og 4:
LEAD
ogLAG
opstod i SQL Server 2012, men den højeste version af SQL server, som den nyeste version af Linq til SQL (Framework 4.6.1) er målrettet mod med versionsspecifik kode, er 2008:http://referencesource.microsoft.com/#System.Data.Linq/SqlClient/SqlProvider.cs,2fac367846- Enhedsramme:nej, undskyld.
- MSDN antyder, at sekvensfunktioner generelt har begrænset understøttelse:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/bb882656(v=vs.100)
- Der er ingen antydning om, at
SqlFunctions
ville give Lead, Lag eller noget lignende:https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8