Zajrzyj do projektu MoreLinq (na github):http://morelinq.github.io
Tam Lead i Lag są implementowane jako rozszerzenia:
public static IEnumerable<TResult> Lag<TSource, TResult>(
this IEnumerable<TSource> source,
int offset,
TSource defaultLagValue,
Func<TSource, TSource, TResult> resultSelector
)
odniesienie:https://morelinq.github.io/2.0/ref /api/html/M_MoreLinq_MoreEnumerable_Lag__2_1.htm
EDYCJA:To jest tylko Linq to Objects. Tak więc po zastosowaniu do źródła danych SQL, pobierze wszystkie wiersze, a następnie wykona obliczenia poza bazą danych. Nie tego oczekuje OP.
Wyniki badań mówią „nie , nie jest to możliwe" dla pozycji 1,2,3 i 4:
LEAD
iLAG
pojawiła się w SQL Server 2012, ale najnowsza wersja serwera SQL, do której kierowana jest najnowsza wersja Linq to SQL (Framework 4.6.1) z kodem specyficznym dla wersji, to 2008:http://referencesource.microsoft.com/#System.Data.Linq/SqlClient/SqlProvider.cs,2fac3481a656764b- Struktura encji:nie, przepraszam.
- MSDN podpowiada, że funkcje sekwencji mają na ogół ograniczoną obsługę:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/bb882656(v=vs.100)
- Nie ma żadnej wskazówki, że
SqlFunctions
zapewni Lead, Lag lub coś podobnego:https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8