【发布时间】:2009-04-02 04:22:41
【问题描述】:
(.NET 3.5 SP1,VS 2008,VB.NET,MSSQL Server 2008)
我正在编写一个小型网络应用程序来测试高棉 Unicode 和老挝 Unicode。我有一个表格,以高棉 Unicode 存储文本,结构如下:
[t_id] [int] IDENTITY(1,1) NOT NULL
[t_chid] [int] NOT NULL
[t_vn] [int] NOT NULL
[t_v] [nvarchar](max) NOT NULL
我可以正常使用 Linq to SQL 进行 CRUD。即使我没有更改 MSSQL Server 2008 的默认排序规则,文本也会在网页上正常显示。
当搜索列 [t_v] 时,页面将需要很长时间才能加载,事实上,它会加载该列的每一行。它从不与我用于搜索的“关键字”标准进行比较。这是我的搜索查询:
Public Shared Function SearchTestingKhmerTable(ByVal keyword As String) As DataTable
Dim db As New BibleDataClassesDataContext()
Dim query = From b In db.khmer_books _
From ch In db.khmer_chapters _
From v In db.testing_khmers _
Where v.t_v.Contains(keyword) And ch.kh_book_id = b.kh_b_id And v.t_chid = ch.kh_ch_id _
Select b.kh_b_id, b.kh_b_title, ch.kh_ch_id, ch.kh_ch_number, v.t_id, v.t_vn, v.t_v
Dim dtDataTableOne = New DataTable("dtOne")
dtDataTableOne.Columns.Add("bid", GetType(Integer))
dtDataTableOne.Columns.Add("btitle", GetType(String))
dtDataTableOne.Columns.Add("chid", GetType(Integer))
dtDataTableOne.Columns.Add("chn", GetType(Integer))
dtDataTableOne.Columns.Add("vid", GetType(Integer))
dtDataTableOne.Columns.Add("vn", GetType(Integer))
dtDataTableOne.Columns.Add("verse", GetType(String))
For Each r In query
dtDataTableOne.Rows.Add(New Object() {r.kh_b_id, r.kh_b_title, r.kh_ch_id, r.kh_ch_number, r.t_id, r.t_vn, r.t_v})
Next
Return dtDataTableOne
End Function
请注意,我使用与老挝 Unicode 完全相同的代码和数据库设计,它工作得很好。我得到了搜索预期的返回查询。
我无法弄清楚在高棉表中搜索查询的问题。
我使用以下 Linq 加入表格:
Dim query = From b In db.khmer_books _
Join ch In db.khmer_chapters On b.kh_b_id Equals ch.kh_book_id _
Join v In db.testing_khmers On ch.kh_ch_id Equals v.t_chid _
Where v.t_v.Contains(keyword) _
Select b.kh_b_id, b.kh_b_title, ch.kh_ch_id, ch.kh_ch_number, v.t_id, v.t_vn, v.t_v
但我仍然得到了该表中的所有行。任何的想法 ?非常感谢。
【问题讨论】:
标签: .net asp.net sql-server linq-to-sql