2016-05-23 2 views
3

Ist es möglich, die LEAD oder LAG SQL-Funktionen von C# zu verwenden?SQL Lead und Lag Funktionen von C# Code

Meine Präferenz der Methode ist:

  1. Linq
  2. Entity Framework
  3. Dynamische Linq
  4. SQLFunctions Klasse
  5. Handbuch TSQL über eine SQLCommand

Ich weiß SQL es kann über Methode 5 erfolgen, aber was ist mit 1 bis 4?

+0

http://stackoverflow.com/a/21767411/1132334 würde bedeuten, dass 1 und 3 (noch) nicht möglich sind. Aber diese Antwort ist schon mehr als zwei Jahre alt, also scheint die Forschung im neuesten .NET-Framework die Mühe wert zu sein – dlatikay

Antwort

2

Blick in die MoreLinq Projekt (auf Github): http://morelinq.github.io

Dort werden Blei und Lag als Erweiterungen implementiert:

public static IEnumerable<TResult> Lag<TSource, TResult>(
    this IEnumerable<TSource> source, 
    int offset, 
    TSource defaultLagValue, 
    Func<TSource, TSource, TResult> resultSelector 
) 

Referenz: https://morelinq.github.io/2.0/ref/api/html/M_MoreLinq_MoreEnumerable_Lag__2_1.htm

EDIT: Dies ist Linq to Objects nur. Wenn es also auf eine SQL-Datenquelle angewendet wird, würde es alle Zeilen abrufen und dann die Berechnung außerhalb der Datenbank durchführen. Das erwartet das OP nicht.

Forschungsergebnisse sagen "keine, es nicht möglich ist" für Artikel 1,2,3 und 4:

+0

Ich habe mir das angesehen, aber es scheint nur für linq Objekte zu sein. Ich habe gerade die neueste Beta heruntergeladen, um zu beweisen, und yep, zieht die gesamte Tabelle aus SQL, bevor dann die Verzögerung/Lead im Speicher ausgeführt wird. – OrdinaryOrange