Frage

würde Ich mag eine Abfrage mit einem Kreuz schaffen gelten in eine benutzerdefinierte Tabellenwert-Funktion in LINQ. Die SQL wäre wirklich ziemlich einfach wie folgt:

SELECT *
FROM MyTable mt
CROSS APPLY MyTVF(mt.id)

Diese Post gibt ein Beispiel einer LINQ-Abfrage, dass die Ergebnisse in der generierten sQL, die beide enthalten eine Quer anwenden und eine äußere gilt aber nur für eine Sub-Abfrage nicht für eine tvf. Diese Artikel bestätigt, dass LINQ to SQL generiert Quer anwenden und äußere Anwendung Betreiber für „Beziehung Navigations“ aber ich bin nicht sicher, was das bedeutet in diesem Zusammenhang. Diese Beitrag beschreibt ziemlich genau, was ich tun möchte, und die Antwort sagt der einzige Weg, dies zu tun ist die SQL-Abfrage in einer gespeicherten Prozedur und rufen dann die sp über LINQ zu wickeln. Ich hoffe, dass dies nicht wahr ist, weil ich eigentlich ein tvf braucht, die auf diese Weise der gesamte Anwendung in mehreren LINQ-Abfragen verwendet werden können, so „wickeln Sie es in einem sp“ würde nicht für mich arbeiten. Kennt jemand eine Möglichkeit, so etwas wie die einfache SQL-Anweisung oben über LINQ zu bekommen?

War es hilfreich?

Lösung

Wie wäre es damit:

from mt in db.MyTable
from mf in db.MyTVF (mt.id)
select new { mt.Blah, mf.Blah }

Andere Tipps

    var query = ActivityRepository.Where(p => p.iAction > -1 && userIds.Contains(p.iSellerId)).GroupBy(c => c.iSellerId).Select(c => c.OrderByDescending(cc => cc.dBeginTime).First()).Select(a => new ActivityInfo
        {
            ActivityId = a.iActivityId,
            StartTime = a.dBeginTime,
            SellerId = a.iSellerId,
            EndTime = a.dEndTime,
            ActivityName = a.sName,
        });

die keypoint ist: .Select (c => c.OrderByDescending (cc => cc.dBeginTime) .First ())

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top