【发布时间】:2011-02-23 08:26:03
【问题描述】:
我通过 IQueryable 扩展方法在我的应用程序中链接搜索条件,例如:
public static IQueryable<Fish> AtAge (this IQueryable<Fish> fish, Int32 age)
{
return fish.Where(f => f.Age == age);
}
不过,我还有一个全文搜索存储过程:
CREATE PROCEDURE [dbo].[Fishes_FullTextSearch]
@searchtext nvarchar(4000),
@limitcount int
AS
SELECT Fishes.* FROM Fishes
INNER JOIN CONTAINSTABLE(Fishes, *, @searchtext, @limitcount)
AS KEY_TBL ON Fishes.Id = KEY_TBL.[KEY]
ORDER BY KEY_TBL.[Rank]
存储过程显然不会返回 IQueryable,但是,是否可以使用 IQueryable 以某种方式限制存储过程的结果集?
我正在设想类似 .AtAge(5).AboveWeight(100).Fishes_FulltextSearch("abc")。
在这种情况下,全文搜索应在我的 Fishes 表的较小子集上执行(按年龄和体重缩小)。
这样的事情可能吗?示例代码?
【问题讨论】:
标签: c# linq linq-to-sql iqueryable