Lihat proyek MoreLinq (di github):http://morelinq.github.io
Di sana, Lead dan Lag diimplementasikan sebagai ekstensi:
public static IEnumerable<TResult> Lag<TSource, TResult>(
this IEnumerable<TSource> source,
int offset,
TSource defaultLagValue,
Func<TSource, TSource, TResult> resultSelector
)
referensi:https://morelinq.github.io/2.0/ref /api/html/M_MoreLinq_MoreEnumerable_Lag__2_1.htm
EDIT:Ini hanya Linq to Objects. Jadi ketika diterapkan ke sumber data SQL, itu akan mengambil semua baris dan kemudian melakukan perhitungan di luar database. Ini bukan yang diharapkan OP.
Hasil penelitian mengatakan "tidak , tidak mungkin" untuk butir 1,2,3 dan 4:
LEAD
danLAG
muncul di SQL Server 2012, tetapi versi tertinggi dari SQL server yang versi terbaru dari Linq to SQL (Framework 4.6.1) target dengan kode khusus versi, adalah 2008:http://referencesource.microsoft.com/#System.Data.Linq/SqlClient/SqlProvider.cs,2fac3481a656764b- Kerangka entitas:tidak, maaf.
- MSDN mengisyaratkan bahwa fungsi urutan umumnya memiliki dukungan terbatas:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/bb882656(v=vs.100)
- Tidak ada petunjuk bahwa
SqlFunctions
akan memberikan Lead, Lag, atau yang serupa:https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8