Question

Je voudrais créer une requête avec une croix appliquer en fonction de la valeur de table définie par l'utilisateur dans LINQ. Le SQL serait vraiment assez simple comme ci-dessous:

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

Ce après donne un exemple d'une requête LINQ que les résultats dans SQL généré, qui contient à la fois une croix et une application extérieure applique, mais seulement pour une sous requête non pour une TVF. Cet article confirme que LINQ to SQL va générer et appliquer croix extérieure appliquer opérateurs pour « navigations relation », mais je ne sais pas ce que cela signifie dans ce contexte. Ce poste décrit à peu près ce que je veux faire et la réponse dit que la seule façon de le faire est d'envelopper la requête SQL dans une procédure stockée puis appeler la sp via LINQ. J'espère que ce n'est pas vrai parce que j'ai réellement besoin d'un TVF qui peut être utilisé de cette manière tout au long d'une application dans plusieurs requêtes LINQ si « l'envelopper dans une sp » ne fonctionnerait pas pour moi. Quelqu'un sait-il d'une façon d'obtenir quelque chose comme simple instruction SQL ci-dessus via LINQ?

Était-ce utile?

La solution

Que diriez-vous ceci:

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

Autres conseils

    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,
        });

la keypoint est: .Select (c => c.OrderByDescending (cc => cc.dBeginTime) .Premier ())

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top