(github で) MoreLinq プロジェクトを調べます: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
編集:これは Linq to Objects のみです。そのため、SQL データ ソースに適用すると、すべての行がフェッチされ、データベースの外部で計算が行われます。これは OP が期待するものではありません。
調査結果は「いいえ」 、それはできません」項目 1、2、3、および 4 について:
LEAD
およびLAG
SQL Server 2012 で登場しましたが、Linq to SQL (Framework 4.6.1) の最新バージョンがバージョン固有のコードで対象とする SQL サーバーの最高バージョンは 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、または同様のものを提供します。 &view=netframework-4.8">https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions?&view=netframework-4.8