2
我有事如下表像來搜索一些文字:我可以將IQueryable <>傳遞給表值函數嗎?
SearchedTextTable
Id int primary key
Text nvarchar(max)
Code int
文字是全文索引的,所以我做了如下表值函數與LinqToSQL工作:
ALTER FUNCTION [dbo].[SearchText] (@keywords nvarchar(4000))
returns @results table (Id int not null)
as
begin
INSERT @results
SELECT
Id
from SearchedTextTable
where contains(Text,@keywords)
return;
end;
我想要做的是在搜索文本之前應用一些條件,如下面的代碼:
注意:條件實際上有點複雜,所以我不想把它們放到表值函數中。
using(var contetxt= new FooDataContext())
{
var list = context.SearchedTextTable.Where(x => x.Code==code);
var results = context.SearchText(list, keywords).ToList();
}
和SEARCHTEXT功能應該是這樣的:
ALTER FUNCTION [dbo].[SearchText] (@table table, @keywords nvarchar(4000))
returns @results table (Id int not null)
as
begin
INSERT @results
SELECT
Id
from @table
where contains(Text,@keywords)
return;
end;
這可能嗎?如果是的話,你能告訴我如何?
由於提前,
柳
編輯
一些測試後,似乎性能也不影響什麼,如果我做全文搜索前設置一些條件。他們都返回少於10毫秒。