Вопрос

Я хотел бы создать запрос с помощью перекрестного применения в пользовательской функции значения таблицы в LINQ. SQL будет действительно довольно простым, как показано ниже:

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

Этот POST приводит пример запроса LINQ, который приводит к сгенерированному SQL, который содержит как крест, так и внешний применить, но только для дополнительного запроса, а не для TVF. Этот Статья подтверждает, что LINQ к SQL будет генерировать перекрестный применить и внешний применить операторы для «навигации отношений», но я не уверен, что это значит в этом контексте. Этот Почта подробно описывает то, что я хочу сделать, и ответ говорит, что единственный способ сделать это - это обернуть запрос SQL в сохраненной процедуре, а затем позвоните SP через LINQ. Я надеюсь, что это неправда, потому что мне действительно нужен TVF, который можно использовать таким образом на протяжении всего приложения в несколько запросов LINQ, так что «обернуть его в SP», не будет работать для меня. Кто-нибудь знает о способе получить что-то вроде простого выписка SQL выше Via Linq?

Это было полезно?

Решение

Как насчет этого:

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

Другие советы

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

Keypoint:.Выберите (C => C.OrderbyDescending (CC => CC.DBegIntime) .First ())

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top