我在Datagridview中有2列:
我只想使用一个文本框来搜索英语和阿拉伯语,但这会降低性能:
Me.TbBindingSource.Filter = "English like '" + TextBox1.Text + "%' Or Arabic like '" + TextBox1.Text + "%'"
我的新方法是检查一个文本中是否有阿拉伯字符。如果有,查询将仅搜索阿拉伯语含义列。否则,它将搜索英文单词:
Dim x As Char = "و"
If TextBox1.Text.Contains(x) Then
TbBindingSource.Filter = "Arabic like '" + TextBox1.Text + "%'"
Else
TbBindingSource.Filter = "English like '" + TextBox1.Text + "%'"
End If
我只知道如何检查一个阿拉伯字符,但是我需要全部检查。
PS:我是Visual Basic的新手,并且了解C#,所以如果您能给我任何一个提示,那就太好了。
答案 0 :(得分:0)
“ LIKE”是一个功能强大的关键字,但是它会大大降低SQL的速度。使用前,应尽可能缩小搜索范围。
您的问题似乎听起来很简单,但更像一堆问题,很快就会变得复杂。
仍然,这里有一些代码可以帮助您猜测一个单词是阿拉伯语还是英语。希望对您有所帮助:
Public Function IsThisArabic(ByVal word As String) As Boolean
For Each car As Char In word.ToCharArray
If AscW(car) > 600 Then
Return True
End If
Next
Return False
End Function
如果您觉得少用几个字符就足够了,那就适合自己。该函数查看单词的每个字符,如果至少有一个阿拉伯字母ascii字符(然后停止查找),则返回True。
接下来了解您的目标受众:您有简短的词典还是庞大的词典?您会经常检查相同的单词还是总是新单词?
如果只有一小段词典,您可能只想抓住所有词典而不是执行许多查询,然后从您自己的内存中进行操作。如果您有理由认为您会多次查找相同的单词,则应建立缓存。