Regardez dans le projet MoreLinq (sur github) :https://morelinq.github.io
Ici, Lead et Lag sont implémentés en tant qu'extensions :
public static IEnumerable<TResult> Lag<TSource, TResult>(
this IEnumerable<TSource> source,
int offset,
TSource defaultLagValue,
Func<TSource, TSource, TResult> resultSelector
)
référence :https://morelinq.github.io/2.0/ref /api/html/M_MoreLinq_MoreEnumerable_Lag__2_1.htm
EDIT :Il s'agit uniquement de Linq to Objects. Ainsi, lorsqu'il est appliqué à une source de données SQL, il récupère toutes les lignes, puis effectue le calcul en dehors de la base de données. Ce n'est pas ce à quoi l'OP s'attend.
Les résultats de la recherche disent "non , ce n'est pas possible" pour les items 1,2,3 et 4 :
LEADetLAGest apparu dans SQL Server 2012, mais la version la plus élevée de SQL Server que la dernière version de Linq to SQL (Framework 4.6.1) cible avec un code spécifique à la version est 2008 :https://referencesource.microsoft.com/#System.Data.Linq/SqlClient/SqlProvider.cs,2fac3481a656764b- Framework d'entité :non, désolé.
- MSDN indique que les fonctions de séquence ont généralement une prise en charge limitée :https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/bb882656(v=vs.100)
- Il n'y a aucune indication que
SqlFunctionsfournirait Lead, Lag ou quelque chose de similaire :https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8