Regardez dans le projet MoreLinq (sur github) :http://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 :
LEAD
etLAG
est 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 :http://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
SqlFunctions
fournirait Lead, Lag ou quelque chose de similaire :https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8