Esamina il progetto MoreLinq (su github):http://morelinq.github.io
Lì, Lead e Lag sono implementati come estensioni:
public static IEnumerable<TResult> Lag<TSource, TResult>(
this IEnumerable<TSource> source,
int offset,
TSource defaultLagValue,
Func<TSource, TSource, TResult> resultSelector
)
riferimento:https://morelinq.github.io/2.0/ref /api/html/M_MoreLinq_MoreEnumerable_Lag__2_1.htm
EDIT:questo è solo Linq to Objects. Quindi, quando applicato a un'origine dati SQL, recupera tutte le righe e quindi esegue il calcolo all'esterno del database. Questo non è ciò che si aspetta l'OP.
I risultati della ricerca dicono "no , non è possibile" per gli articoli 1,2,3 e 4:
LEAD
eLAG
è stato creato in SQL Server 2012, ma la versione più alta di SQL Server che la versione più recente di Linq to SQL (Framework 4.6.1) ha come destinazione il codice specifico della versione è il 2008:http://referencesource.microsoft.com/#System.Data.Linq/SqlClient/SqlProvider.cs,2fac3481a656764b- Quadro entità:no, mi dispiace.
- MSDN suggerisce che le funzioni di sequenza generalmente hanno un supporto limitato:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/bb882656(v=vs.100)
- Non vi è alcun indizio che
SqlFunctions
fornirebbe Lead, Lag o qualcosa di simile:https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8