private List <string> GetFirst(string name) { List <string> source = PinYinHelper.ZhToPinYinList(name); return((from pinyin in source select(from p in pinyin.Split('\'') where p != "" select p).Aggregate("", (string current, string py) => current + py[0].ToString())).ToList()); }
private void SetPinYin(string typeString, List <PinYinSource> pinyinSourceList, ref string error) { try { PinYinListAll[typeString] = new List <CacheFirstPinYin>(); for (int i = 0; i < pinyinSourceList.Count; i++) { PinYinSource pinYinSource = pinyinSourceList[i]; string name = pinYinSource.Name; name = PinYinHelper.GetNumberPinYin(name); List <string> searchList = PinYinHelper.ZhToPinYinList(name); CacheFirstPinYin cacheFirstPinYin = new CacheFirstPinYin(); cacheFirstPinYin.ID = pinYinSource.ID; cacheFirstPinYin.Name = pinYinSource.Name; cacheFirstPinYin.SearchList = searchList; PinYinListAll[typeString].Add(cacheFirstPinYin); } } catch (Exception) { //LogHelper.WriteCustom("拼音日志", "typestring=" + typeString + "<span style='color:red'>错误:SetPinYin方法错误!count=" + PinYinListAll[typeString].Count + "</span>", 2, ex); error = error + " SetPinYin方法错误!count=" + PinYinListAll[typeString].Count; } }
private List <PinYinResult> GetPinYin(string typeString, string hanziName) { List <string> list = PinYinHelper.ZhToPinYinList(hanziName); List <PinYinResult> list2 = new List <PinYinResult>(); foreach (string item in list) { for (int j = 0; j < PinYinListAll[typeString].Count; j++) { CacheFirstPinYin cacheFirstPinYin; try { cacheFirstPinYin = PinYinListAll[typeString][j]; } catch { continue; } if (cacheFirstPinYin != null && cacheFirstPinYin.SearchList != null && cacheFirstPinYin.SearchList.Any((string s) => s == item)) { list2.Add(new PinYinResult { ID = cacheFirstPinYin.ID, Name = cacheFirstPinYin.Name, Contrast = 35, Debug = "拼音相等" + 35 }); } } string[] nameArray = (from p in item.Split('\'') where p != "" select p).ToArray(); string[] array = nameArray; foreach (string i in array) { for (int l = 0; l < PinYinListAll[typeString].Count; l++) { CacheFirstPinYin cacheFirstPinYin2; try { cacheFirstPinYin2 = PinYinListAll[typeString][l]; } catch { continue; } if (cacheFirstPinYin2 != null && cacheFirstPinYin2.SearchList != null && cacheFirstPinYin2.SearchList.Any((string s) => s.Split('\'').Count((string c) => c == i) == nameArray.Count((string c) => c == i))) { list2.Add(new PinYinResult { ID = cacheFirstPinYin2.ID, Name = cacheFirstPinYin2.Name, Contrast = 35, Debug = "拼音包含字符" + 35 }); int num = cacheFirstPinYin2.SearchList.Min((string s) => s.IndexOf(i)); list2.Add(new PinYinResult { ID = cacheFirstPinYin2.ID, Name = cacheFirstPinYin2.Name, Contrast = num * -1, Debug = "拼音位置" + num * -1 }); for (int m = 0; m < nameArray.Length - 1; m++) { string lianxu = nameArray[m] + nameArray[m + 1]; if (cacheFirstPinYin2.SearchList.Any((string s) => s.Replace("'", "").Contains(lianxu))) { list2.Add(new PinYinResult { ID = cacheFirstPinYin2.ID, Name = cacheFirstPinYin2.Name, Contrast = 15, Debug = "拼音连续" + 15 }); } } } } } } return(list2); }