Podívejte se na projekt MoreLinq (na githubu):http://morelinq.github.io
Tam jsou Lead a Lag implementovány jako rozšíření:
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:Toto je pouze Linq to Objects. Takže když se použije na zdroj dat SQL, načte všechny řádky a poté provede výpočet mimo databázi. Toto OP neočekává.
Výsledky výzkumu říkají „ne , to není možné“ pro položky 1, 2, 3 a 4:
LEAD
aLAG
vznikla v SQL Server 2012, ale nejvyšší verze SQL serveru, na kterou cílí nejnovější verze Linq to SQL (Framework 4.6.1) se specifickým kódem verze, je 2008:http://referencesource.microsoft.com/#System.Data.Linq/SqlClient/SqlProvider.cs,2fac3481a65676 /a>- Rámec entit:ne, omlouvám se.
- MSDN naznačuje, že sekvenční funkce mají obecně omezenou podporu:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/bb882656(v=vs.100)
- Neexistuje žádný náznak, že
SqlFunctions
by poskytl Lead, Lag nebo něco podobného:https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8