我想创建一个带有十字架的查询,将其应用于LINQ中的用户定义的表值函数。 SQL真的很简单如下:

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

POST给出了一个LINQ查询的示例,该示例会导致生成的SQL,该SQL既应用了十字架,又应用了外部应用,但仅适用于TVF的子查询。 文章确认LINQ至SQL将生成交叉应用,外部应用运算符进行“关系导航”,但我不确定在这种情况下这意味着什么。 Post几乎描述了我要做的事情,答案说这样做的唯一方法是将SQL查询包装在存储过程中,然后通过LINQ致电SP。我希望这不是真的,因为我实际上需要一个可以在多个LINQ查询中以这种方式使用的TVF,因此“将其包裹在SP中”对我不起作用。有谁知道通过LINQ获得类似Simple SQL语句的方法?

有帮助吗?

解决方案

这个怎么样:

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

关键点是:.SELECT(C => c. orderbyDescending(cc => cc.dbegintime).first())

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top