linq中不能準確按拼音排序

2022-07-19 04:06:12 字數 984 閱讀 8952

在linqtoobject中,利用

orderby/orderbydescending, thenby/thenbydescending

這4個方法排序時,

發現不能正確的按拼音排序,所以在排序時增加編碼支援  

encoding enc = encoding.getencoding("gb2312");

dict.orderby(p => bitconverter.tostring(enc.getbytes(p.key)));

若是linqtosql的話,就需要看下資料庫機器得sql是否為中文版的?若資料庫是英文版,就有可能出現不能正確的按拼音排序的情況,這時候,可以通過修改資料庫屬性來達到按拼音正確排序:開啟sql server management studio,選擇對應的資料庫,右擊選擇屬性(r),點選選項(options),第乙個排序規則(collation),請選 chinese_prc_ci_as。

排序規則名稱由兩部份構成,前半部份是指本排序規則所支援的字符集。

如:

chinese_prc_cs_ai_ws

前半部份:指unicode字符集,chinese_prc_指針對大陸簡體字unicode的排序規則。

排序規則的後半部份即字尾 含義:

_bin 二進位制排序

_ci(cs) 是否區分大小寫,ci不區分,cs區分

_ai(as) 是否區分重音,ai不區分,as區分   

_ki(ks) 是否區分假名型別,ki不區分,ks區分 

_wi(ws) 是否區分寬度 wi不區分,ws區分 

區分大小寫:如果想讓比較將大寫字母和小寫字母視為不等,請選擇該選項。

區分重音:如果想讓比較將重音和非重音字母視為不等,請選擇該選項。如果選擇該選項,比較還將重音不同的字母視為不等。

區分假名:如果想讓比較將片假名和平假名日語音節視為不等,請選擇該選項。

在linq語言中,不能準確按拼音排序

在專案中,利用 orderby orderbydescending,thenby thenbydescending 這4個方法排序時,發現了這樣的問題 在本機測試,能正確按拼音排序 但是放上伺服器是,就不能正確的按拼音排序了。原來orderby orderbydescending,thenby th...

漢字按拼音排序

漢字讀音資料庫 中的unihan readings.txt 漢字讀音文件 kmandarin是普通話讀音 通過查詢表將注音符號替換為英文本母,結尾帶乙個數字 usr bin env python3 coding utf 8 trans table def trans s for c in s if ...

Oracle按筆畫,部首,拼音排序

在oracle9i中新增了按照拼音 部首 筆畫排序功能。設定nls sort值 schinese radical m 按照部首 第一順序 筆劃 第二順序 排序 schinese stroke m 按照筆劃 第一順序 部首 第二順序 排序 schinese pinyin m 按照拼音排序,系統的預設排...