2010-05-24 174 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 ...