Linq to sql 从LINQ到SQL中调用UDF和存储过程的效率如何?

Linq to sql 从LINQ到SQL中调用UDF和存储过程的效率如何?,linq-to-sql,stored-procedures,performance,user-defined-functions,Linq To Sql,Stored Procedures,Performance,User Defined Functions,我遇到了一个问题,需要在LINQ to SQL中调用一个UDF,然后在其中调用另一个存储过程。这是密码 public IQueryable<DataDTO> GetLotsaData(string dataId, DateTime date, string custIDs) { var data = (from rs in _context.spXI_GetData(dataId, date, custIDs)

我遇到了一个问题,需要在LINQ to SQL中调用一个UDF,然后在其中调用另一个存储过程。这是密码

    public IQueryable<DataDTO> GetLotsaData(string dataId, DateTime date, string custIDs)
    {
        var data = (from rs in _context.spXI_GetData(dataId, date, custIDs)
                          select new DataDTO
                          {
                              Time = rs.Time,
                              TimeZone = _context.GetTimezone(postDate, _context.GetDetailedData(rs.PKID, custIDs).FirstOrDefault().Zip),
                              CompletedTime = rs.Completed_Time,
                          });

        return data.AsQueryable<DataDTO>();
    }
public IQueryable GetLotsaData(字符串dataId、DateTime日期、字符串custIDs)
{
var data=(来自_context.spXI_GetData(dataId,date,custIDs)中的rs)
选择新数据到
{
时间=卢比时间,
时区=_context.GetTimezone(postDate,_context.GetDetailedData(rs.PKID,custIDs.FirstOrDefault().Zip),
CompletedTime=rs.Completed\U时间,
});
返回数据。AsQueryable();
}
我担心的线路是我呼叫GetTimezone UDF的线路。在LINQ查询中间调用UDF,然后调用另一个存储过程(GETDeILIDEDATA)来获得UDF的单个值是低效的吗?这将生成什么样的SQL


对我来说,它看起来有点复杂,但仍然比存储过程中的sub-select或join更好。(我试图避免让我的存储过程返回新字段-时区,而只是让它在我的DTO中返回。)是的,我意识到如果我们使用UTC,这一切都可以避免。遗憾的是,我无法控制它。

为什么spXI_GetData不能返回完整的结果集?我认为这在这种情况下是最佳的。
GetTimezone
GetDetailedData
函数将为
spXI\u GetData
集中的每一行调用。如果
GetTimezone
函数可以返回一个内联表,而不是使用它进行连接,那么效果会更好