我找到的最佳解决方案是继续在 SQL 中创建一个表值函数来产生结果,例如 ::
CREATE function [dbo].[getMatches](@textStr nvarchar(50)) returns @MatchTbl table(
Fullname nvarchar(50) null,
ID nvarchar(50) null
)
as begin
declare @SearchStr nvarchar(50);
set @SearchStr = '%' + @textStr + '%';
insert into @MatchTbl
select (LName + ', ' + FName + ' ' + MName) AS FullName, ID = ID from employees where LName like @SearchStr;
return;
end
GO
select * from dbo.getMatches('j')
然后,您只需将该函数拖入您的 LINQ.dbml 设计器并像调用其他对象一样调用它。LINQ 甚至知道存储函数的列。我这样称呼它::
Dim db As New NobleLINQ
Dim LNameSearch As String = txt_searchLName.Text
Dim hlink As HyperLink
For Each ee In db.getMatches(LNameSearch)
hlink = New HyperLink With {.Text = ee.Fullname & "<br />", .NavigateUrl = "?ID=" & ee.ID}
pnl_results.Controls.Add(hlink)
Next
难以置信的简单,并真正利用了应用程序中 SQL 和 LINQ 的强大功能……当然,您可以生成任何您想要的表值函数以获得相同的效果!