2010-05-24 46 views
1

我链接的搜索条件通过IQueryable的扩展方法我的应用程序,例如,end:链LINQ的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表的较小子集上执行(按年龄和权重缩小)。

是这样的可能吗?示例代码?

回答

0

我认为,如果你

  • 创建Fishes_FulltextSearch("abc")
  • 内它的另一个扩展方法它可能工作,您将结果集的previos方法(AtAge和AboveWeight)的态表
  • 使用存储过程中的此时态表工作
  • 从存储过程返回所需结果集
  • 并从新扩展m返回ethod存储过程的结果集。

希望这会有所帮助。

+0

临时代替临时 – 2012-02-26 19:15:17

0

如果您可以在视图中使用ContainsTable,那么将返回IQueryable ...