我有一个用户定义的函数,它接受2个datetime参数并返回一个short。
我已将它添加到我的Linq to Sql模型中,这意味着我有如下函数:
private short? Aqua_NumShopDays(System.Nullable<System.DateTime> start,
System.Nullable<System.DateTime> end)
所以,我的问题是,如何轻松地(以LINQy类型的方式)为多个日期对调用它,这只导致一次数据库之旅?
如果需要而不是日期列表,如果第一个参数是固定的,第二个参数是给定范围内的每个值,它仍然是有用的。
答案 0 :(得分:0)
我发现目前为止最好的是创建一个包含一系列数字的表(或创建一个的用户函数),然后在Linq-To-SQL中使用它,如下所示:
// NumberRange is my user defined function, that returns a table with all a row per number
// Here I take that number and calculate the date based on an offset from today
var test = from dayOffset in ARDC.NumberRange(1, 10)
select DateTime.Today.AddDays(dayOffset.Counter.Value); // Counter is the column name of the table returned
// Using the dates, that are calculated on the server, I select a call to the SQL function
var testResults = from toDate in test
select ARDC.Aqua_NumShipDays(DateTime.Today, toDate).Value;
var t = testResults.ToList(); // This results in ONE trip to the database! (yay!)