Giải pháp tốt nhất mà tôi tìm thấy là tiếp tục và tạo một Hàm có giá trị bảng trong SQL để tạo ra các kết quả, chẳng hạn như ::
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')
Sau đó, bạn chỉ cần kéo hàm vào trình thiết kế LINQ.dbml và gọi nó giống như bạn thực hiện các đối tượng khác của mình. LINQ thậm chí còn biết các cột của hàm được lưu trữ của bạn. Tôi gọi nó ra như thế này ::
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
Cực kỳ đơn giản và thực sự phát huy hết sức mạnh của SQL và LINQ trong ứng dụng ... và tất nhiên, bạn có thể tạo bất kỳ hàm có giá trị bảng nào mà bạn muốn cho các hiệu ứng tương tự!