Разгледайте проекта MoreLinq (в github):http://morelinq.github.io
Там Lead и Lag са внедрени като разширения:
public static IEnumerable<TResult> Lag<TSource, TResult>(
this IEnumerable<TSource> source,
int offset,
TSource defaultLagValue,
Func<TSource, TSource, TResult> resultSelector
)
справка:https://morelinq.github.io/2.0/ref /api/html/M_MoreLinq_MoreEnumerable_Lag__2_1.htm
РЕДАКТИРАНЕ:Това е само Link to Objects. Така че, когато се приложи към SQL източник на данни, той ще извлече всички редове и след това ще извърши изчислението извън базата данни. Това не е това, което OP очаква.
Резултатите от изследванията казват „не , не е възможно" за елементи 1,2,3 и 4:
LEAD
иLAG
възникна в SQL Server 2012, но най-новата версия на SQL сървъра, към която е насочена най-новата версия на Linq to SQL (Framework 4.6.1) със специфичен за версията код, е 2008:http://referencesource.microsoft.com/#System.Data.Linq/SqlClient/SqlProvider.cs,2fac3481a656764b- Рамка на обект:не, съжалявам.
- MSDN подсказва, че функциите за последователност обикновено имат ограничена поддръжка:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/bb882656(v=vs.100)
- Няма намек, че
SqlFunctions
ще предостави Lead, Lag или нещо подобно:https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8