1

我有一个用户定义的函数,它接受 2 个日期时间参数并返回一个简短的。

我已将它添加到我的 Linq to Sql 模型中,这意味着我有如下功能:

private short? Aqua_NumShopDays(System.Nullable<System.DateTime> start,
                                System.Nullable<System.DateTime> end)

所以,我的问题是,我怎样才能轻松地将其称为多个日期对(以 LINQy 类型的方式),这只会导致一次数据库访问?

如果需要而不是日期列表,如果第一个参数是固定的,并且第二个参数是给定范围内的每个值,它仍然很有用。

4

1 回答 1

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!)
于 2013-09-20T10:22:29.797 回答