Fchd15x5.cs 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Web;
  6. using CP.Cache;
  7. using CP.Common;
  8. using CP.Model;
  9. namespace CP.Business
  10. {
  11. /// <summary>
  12. /// 华东15x5的逻辑操作类
  13. /// sam
  14. /// </summary>
  15. public class Fchd15x5
  16. {
  17. /// <summary>
  18. /// 缓存
  19. /// </summary>
  20. static WMCache cache = WMCache.GetCacheService();
  21. #region 所有15x5数据
  22. /// <summary>
  23. /// 所有华东15x5数据
  24. /// </summary>
  25. /// <returns></returns>
  26. public static List<Fchd15x5Info> GetFchd15x5List()
  27. {
  28. string key = string.Format(CacheKeys.FCHD15X5_DATALIST);
  29. List<Fchd15x5Info> list = cache.GetObject<List<Fchd15x5Info>>(key) as List<Fchd15x5Info>;
  30. if (list == null)
  31. {
  32. list = Fchd15x5Data.GetFchd15x5List();
  33. cache.AddObject(key, list, (int)CacheTime.Data);
  34. }
  35. return list;
  36. }
  37. /// <summary>
  38. /// 数据筛选
  39. /// </summary>
  40. /// <param name="pagesize">最近n条</param>
  41. /// <param name="year">某年</param>
  42. /// <param name="sqi">开始期</param>
  43. /// <param name="eqi">结束期</param>
  44. /// <param name="week">星期n(最近120期)</param>
  45. /// <param name="ds">单双期.1=单;2=双(最近120期)</param>
  46. /// <returns></returns>
  47. public static List<Fchd15x5Info> GetFchd15x5List(ref List<Fchd15x5Info> list, int pagesize, int year, int sqi, int eqi, int week = 0, int ds = 0)
  48. {
  49. List<Fchd15x5Info> rlist = new List<Fchd15x5Info>();
  50. if (list == null || list.Count == 0)
  51. return rlist;
  52. int size = list.Count;
  53. if (pagesize > 0)
  54. {
  55. for (int i = (size - pagesize); i < size; i++)
  56. {
  57. rlist.Add(list[i]);
  58. }
  59. return rlist;
  60. }
  61. if (year > 0)
  62. {
  63. rlist.Clear();
  64. for (int i = 0; i < size; i++)
  65. {
  66. if (TypeConverter.StrToInt(list[i].qi.ToString().Substring(0, 4), 0) == year)
  67. rlist.Add(list[i]);
  68. }
  69. return rlist;
  70. }
  71. if (week > 0)
  72. {
  73. rlist.Clear();
  74. List<Fchd15x5Info> temp = new List<Fchd15x5Info>();
  75. for (int i = 0; i < size; i++)
  76. {
  77. if (list[i].week == week)
  78. temp.Add(list[i]);
  79. }
  80. //for (int i = (temp.Count - 120); i < temp.Count; i++)
  81. //{
  82. // rlist.Add(temp[i]);
  83. //}
  84. //return rlist;
  85. return temp;
  86. }
  87. if (ds > 0)
  88. {
  89. rlist.Clear();
  90. List<Fchd15x5Info> temp = new List<Fchd15x5Info>();
  91. for (int i = 0; i < size; i++)
  92. {
  93. if (ds == 1)
  94. {
  95. if (list[i].qi % 2 != 0)
  96. temp.Add(list[i]);
  97. }
  98. else if (ds == 2)
  99. {
  100. if (list[i].qi % 2 == 0)
  101. temp.Add(list[i]);
  102. }
  103. }
  104. for (int i = (temp.Count - 120); i < temp.Count; i++)
  105. {
  106. rlist.Add(temp[i]);
  107. }
  108. return rlist;
  109. }
  110. if (sqi > 0 && eqi > 0)
  111. {
  112. rlist.Clear();
  113. int srank = GetFchd15x5Info(ref list, sqi).rank;
  114. int erank = GetFchd15x5Info(ref list, eqi).rank;
  115. if (erank != 0 && srank != 0 && erank > srank)
  116. {
  117. for (int i = srank - 1; i < erank && i < size; i++)
  118. {
  119. rlist.Add(list[i]);
  120. }
  121. }
  122. return rlist;
  123. }
  124. ///无参数条件时,返回所有数据
  125. if (pagesize == 0 && year == 0 && sqi == 0 && eqi == 0 && week == 0)
  126. return list;
  127. return rlist;
  128. }
  129. /// <summary>
  130. /// 根据期数获取期一期的数据...
  131. /// </summary>
  132. /// <param name="qi"></param>
  133. /// <returns></returns>
  134. public static Fchd15x5Info GetFchd15x5Info(ref List<Fchd15x5Info> list, int qi)
  135. {
  136. Fchd15x5Info info = new Fchd15x5Info();
  137. int size = list.Count;
  138. for (int i = 0; i < size; i++)
  139. {
  140. if (list[i].qi == qi)
  141. {
  142. info = list[i];
  143. break;
  144. }
  145. }
  146. return info;
  147. }
  148. #endregion
  149. #region 某个排名的上一次数据
  150. /// <summary>
  151. /// 某个排列的上一排名数据
  152. /// </summary>
  153. /// <param name="rank"></param>
  154. /// <returns></returns>
  155. public static Fchd15x5Info GetLastFchd15x5Info(ref List<Fchd15x5Info> list, int rank)
  156. {
  157. Fchd15x5Info info = new Fchd15x5Info();
  158. if (list != null && list.Count > 0)
  159. {
  160. for (int i = rank - 2; i >= 0; i--)
  161. {
  162. if (list[i].rank == rank - 1)
  163. {
  164. info = list[i];
  165. return info;
  166. }
  167. }
  168. }
  169. return info;
  170. }
  171. #endregion
  172. #region 某个排名的下一次数据
  173. /// <summary>
  174. /// 某个排列的上一排名数据
  175. /// </summary>
  176. /// <param name="rank"></param>
  177. /// <returns></returns>
  178. public static Fchd15x5Info GetNextFchd15x5Info(ref List<Fchd15x5Info> list, int rank)
  179. {
  180. Fchd15x5Info info = new Fchd15x5Info();
  181. if (list != null && list.Count > 0)
  182. {
  183. for (int i = rank - 1; i < list.Count; i++)
  184. {
  185. if (list[i].rank == rank + 1)
  186. {
  187. info = list[i];
  188. return info;
  189. }
  190. }
  191. }
  192. return info;
  193. }
  194. #endregion
  195. /// <summary>
  196. /// 统计15x5每个区间的个数
  197. /// </summary>
  198. /// <param name="info"></param>
  199. /// <param name="qj"></param>
  200. /// <returns></returns>
  201. public static int GetFchd15x5QjCount(Fchd15x5Info info, int qj)
  202. {
  203. List<int> kjh = new List<int> { info.n1, info.n2, info.n3, info.n4, info.n5 };
  204. int[] sqb = { 0, 0, 0 };
  205. for (int j = 1; j < 6; j++)
  206. {
  207. if (kjh.Contains(j))
  208. sqb[0]++;
  209. }
  210. for (int j = 6; j < 11; j++)
  211. {
  212. if (kjh.Contains(j))
  213. sqb[1]++;
  214. }
  215. for (int j = 11; j < 16; j++)
  216. {
  217. if (kjh.Contains(j))
  218. sqb[2]++;
  219. }
  220. if (qj == 1)
  221. return sqb[0];
  222. if (qj == 2)
  223. return sqb[1];
  224. if (qj == 3)
  225. return sqb[2];
  226. return 0;
  227. }
  228. #region 某个数据/形态上一次出现的数据
  229. /// <summary>
  230. /// 15x5某号码上一次出现时的数据
  231. /// </summary>
  232. /// <param name="val"></param>
  233. /// <param name="rank"></param>
  234. /// <returns></returns>
  235. public static Fchd15x5Info GetLastNumFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  236. {
  237. Fchd15x5Info info = new Fchd15x5Info();
  238. if (list != null && list.Count > 0)
  239. {
  240. int size = list.Count;
  241. for (int i = rank - 2; i >= 0; i--)
  242. {
  243. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
  244. if (kjh.Contains(val))
  245. {
  246. info = list[i];
  247. return info;
  248. }
  249. }
  250. }
  251. return info;
  252. }
  253. /// <summary>
  254. /// 上一次15x5某区间个数=count时的数据
  255. /// </summary>
  256. /// <param name="qj"></param>
  257. /// <param name="count"></param>
  258. /// <param name="rank"></param>
  259. /// <returns></returns>
  260. public static Fchd15x5Info GetLastQjCountFchd15x5Info(ref List<Fchd15x5Info> list, int qj, int count, int rank)
  261. {
  262. Fchd15x5Info info = new Fchd15x5Info();
  263. if (list != null && list.Count > 0)
  264. {
  265. int size = list.Count;
  266. for (int i = rank - 2; i >= 0; i--)
  267. {
  268. int[] sqb = { 0, 0, 0 };
  269. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
  270. for (int j = 1; j < 6; j++)
  271. {
  272. if (kjh.Contains(j))
  273. sqb[0]++;
  274. }
  275. for (int j = 6; j < 11; j++)
  276. {
  277. if (kjh.Contains(j))
  278. sqb[1]++;
  279. }
  280. for (int j = 11; j < 16; j++)
  281. {
  282. if (kjh.Contains(j))
  283. sqb[2]++;
  284. }
  285. if (qj == 1 && sqb[0] == count)
  286. {
  287. return list[i];
  288. }
  289. if (qj == 2 && sqb[1] == count)
  290. {
  291. return list[i];
  292. }
  293. if (qj == 3 && sqb[2] == count)
  294. {
  295. return list[i];
  296. }
  297. }
  298. }
  299. return info;
  300. }
  301. /// <summary>
  302. /// 上一次4连形态=val时的数据
  303. /// </summary>
  304. /// <param name="val"></param>
  305. /// <param name="rank"></param>
  306. /// <returns></returns>
  307. public static Fchd15x5Info GetLast4lhFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  308. {
  309. Fchd15x5Info info = new Fchd15x5Info();
  310. if (list != null && list.Count > 0)
  311. {
  312. int size = list.Count;
  313. for (int i = rank - 2; i >= 0; i--)
  314. {
  315. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
  316. if (ZstUtils.GetHd15x5_4lh(kjh) == val)
  317. {
  318. return list[i];
  319. }
  320. }
  321. }
  322. return info;
  323. }
  324. /// <summary>
  325. /// AC值大小的上一次数据
  326. /// </summary>
  327. /// <param name="val"></param>
  328. /// <param name="rank"></param>
  329. /// <returns></returns>
  330. public static Fchd15x5Info GetLastAcDxFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  331. {
  332. Fchd15x5Info info = new Fchd15x5Info();
  333. if (list != null && list.Count > 0)
  334. {
  335. int size = list.Count;
  336. for (int i = rank - 2; i >= 0; i--)
  337. {
  338. if (ZstUtils.GetDxBymiddle(list[i].ac, 4) == val)
  339. {
  340. return list[i];
  341. }
  342. }
  343. }
  344. return info;
  345. }
  346. /// <summary>
  347. /// AC值奇偶的上一次数据
  348. /// </summary>
  349. /// <param name="val"></param>
  350. /// <param name="rank"></param>
  351. /// <returns></returns>
  352. public static Fchd15x5Info GetLastAcJoFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  353. {
  354. Fchd15x5Info info = new Fchd15x5Info();
  355. if (list != null && list.Count > 0)
  356. {
  357. int size = list.Count;
  358. for (int i = rank - 2; i >= 0; i--)
  359. {
  360. if (ZstUtils.GetJo(list[i].ac) == val)
  361. {
  362. return list[i];
  363. }
  364. }
  365. }
  366. return info;
  367. }
  368. /// <summary>
  369. /// AC值质合
  370. /// </summary>
  371. /// <param name="val"></param>
  372. /// <param name="rank"></param>
  373. /// <returns></returns>
  374. public static Fchd15x5Info GetLastAcZhFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  375. {
  376. Fchd15x5Info info = new Fchd15x5Info();
  377. if (list != null && list.Count > 0)
  378. {
  379. int size = list.Count;
  380. for (int i = rank - 2; i >= 0; i--)
  381. {
  382. if (ZstUtils.GetZh(list[i].ac) == val)
  383. {
  384. return list[i];
  385. }
  386. }
  387. }
  388. return info;
  389. }
  390. /// <summary>
  391. /// AC值012路的上一次数据
  392. /// </summary>
  393. /// <param name="val"></param>
  394. /// <param name="rank"></param>
  395. /// <returns></returns>
  396. public static Fchd15x5Info GetLastAc012Fchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  397. {
  398. Fchd15x5Info info = new Fchd15x5Info();
  399. if (list != null && list.Count > 0)
  400. {
  401. int size = list.Count;
  402. for (int i = rank - 2; i >= 0; i--)
  403. {
  404. if (ZstUtils.Get012(list[i].ac) == val)
  405. {
  406. return list[i];
  407. }
  408. }
  409. }
  410. return info;
  411. }
  412. /// <summary>
  413. /// AC值=val的上一次情况
  414. /// </summary>
  415. /// <param name="val"></param>
  416. /// <param name="rank"></param>
  417. /// <returns></returns>
  418. public static Fchd15x5Info GetLastAcFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  419. {
  420. Fchd15x5Info info = new Fchd15x5Info();
  421. if (list != null && list.Count > 0)
  422. {
  423. for (int i = rank - 2; i >= 0; i--)
  424. {
  425. if (list[i].ac == val)
  426. {
  427. return list[i];
  428. }
  429. }
  430. }
  431. return info;
  432. }
  433. /// <summary>
  434. /// 上一次AC值振幅的情况
  435. /// </summary>
  436. /// <param name="val"></param>
  437. /// <param name="rank"></param>
  438. /// <returns></returns>
  439. public static Fchd15x5Info GetLastAczfFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  440. {
  441. Fchd15x5Info info = new Fchd15x5Info();
  442. if (list != null && list.Count > 0)
  443. {
  444. for (int i = rank - 2; i >= 0; i--)
  445. {
  446. if (i > 0)
  447. {
  448. if (Math.Abs(list[i].ac - list[i - 1].ac) == val)
  449. {
  450. info = list[i];
  451. return info;
  452. }
  453. }
  454. }
  455. }
  456. return info;
  457. }
  458. /// <summary>
  459. /// 15x5每位号的大小情况的上一次数据
  460. /// </summary>
  461. /// <param name="val"></param>
  462. /// <param name="site"></param>
  463. /// <param name="rank"></param>
  464. /// <returns></returns>
  465. public static Fchd15x5Info GetLastNumDxFchd15x5Info(ref List<Fchd15x5Info> list, int val, int site, int rank)
  466. {
  467. Fchd15x5Info info = new Fchd15x5Info();
  468. if (list != null && list.Count > 0)
  469. {
  470. for (int i = rank - 2; i >= 0; i--)
  471. {
  472. if (site == 1)
  473. {
  474. if (ZstUtils.Get15x5Dx(list[i].n1) == val)
  475. {
  476. return list[i];
  477. }
  478. }
  479. if (site == 2)
  480. {
  481. if (ZstUtils.Get15x5Dx(list[i].n2) == val)
  482. {
  483. return list[i];
  484. }
  485. }
  486. if (site == 3)
  487. {
  488. if (ZstUtils.Get15x5Dx(list[i].n3) == val)
  489. {
  490. return list[i];
  491. }
  492. }
  493. if (site == 4)
  494. {
  495. if (ZstUtils.Get15x5Dx(list[i].n4) == val)
  496. {
  497. return list[i];
  498. }
  499. }
  500. if (site == 5)
  501. {
  502. if (ZstUtils.Get15x5Dx(list[i].n5) == val)
  503. {
  504. return list[i];
  505. }
  506. }
  507. }
  508. }
  509. return info;
  510. }
  511. /// <summary>
  512. /// 上一次大小比=val的数据
  513. /// </summary>
  514. /// <param name="val"></param>
  515. /// <param name="rank"></param>
  516. /// <returns></returns>
  517. public static Fchd15x5Info GetLastDxbFchd15x5Info(ref List<Fchd15x5Info> list, string val, int rank)
  518. {
  519. Fchd15x5Info info = new Fchd15x5Info();
  520. if (list != null && list.Count > 0)
  521. {
  522. for (int i = rank - 2; i >= 0; i--)
  523. {
  524. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
  525. if (ZstUtils.GetHd15x5Dxb(kjh).Equals(val))
  526. {
  527. return list[i];
  528. }
  529. }
  530. }
  531. return info;
  532. }
  533. /// <summary>
  534. /// 一次大个数=val的数据
  535. /// </summary>
  536. /// <param name="val"></param>
  537. /// <param name="rank"></param>
  538. /// <returns></returns>
  539. public static Fchd15x5Info GetLastDxgsFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank, int type)
  540. {
  541. Fchd15x5Info info = new Fchd15x5Info();
  542. if (list != null && list.Count > 0)
  543. {
  544. for (int i = rank - 2; i >= 0; i--)
  545. {
  546. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
  547. string dxb = ZstUtils.GetHd15x5Dxb(kjh);
  548. string[] dxs = dxb.Split(':');
  549. int d = 0;
  550. int x = 0;
  551. if (dxs != null && dxs.Length > 0)
  552. {
  553. d = TypeConverter.ObjectToInt(dxs[0], 0);
  554. x = TypeConverter.ObjectToInt(dxs[1], 0);
  555. }
  556. if (type == 1)
  557. {
  558. if (d == val)
  559. return list[i];
  560. }
  561. if (type == 2)
  562. {
  563. if (x == val)
  564. return list[i];
  565. }
  566. }
  567. }
  568. return info;
  569. }
  570. /// <summary>
  571. /// 15x5每位号的奇偶情况的上一次数据
  572. /// </summary>
  573. /// <param name="val"></param>
  574. /// <param name="site"></param>
  575. /// <param name="rank"></param>
  576. /// <returns></returns>
  577. public static Fchd15x5Info GetLastNumJoFchd15x5Info(ref List<Fchd15x5Info> list, int val, int site, int rank)
  578. {
  579. Fchd15x5Info info = new Fchd15x5Info();
  580. if (list != null && list.Count > 0)
  581. {
  582. for (int i = rank - 2; i >= 0; i--)
  583. {
  584. if (site == 1)
  585. {
  586. if (ZstUtils.GetJo(list[i].n1) == val)
  587. {
  588. return list[i];
  589. }
  590. }
  591. if (site == 2)
  592. {
  593. if (ZstUtils.GetJo(list[i].n2) == val)
  594. {
  595. return list[i];
  596. }
  597. }
  598. if (site == 3)
  599. {
  600. if (ZstUtils.GetJo(list[i].n3) == val)
  601. {
  602. return list[i];
  603. }
  604. }
  605. if (site == 4)
  606. {
  607. if (ZstUtils.GetJo(list[i].n4) == val)
  608. {
  609. return list[i];
  610. }
  611. }
  612. if (site == 5)
  613. {
  614. if (ZstUtils.GetJo(list[i].n5) == val)
  615. {
  616. return list[i];
  617. }
  618. }
  619. }
  620. }
  621. return info;
  622. }
  623. /// <summary>
  624. /// 上一次奇偶比=val的数据
  625. /// </summary>
  626. /// <param name="val"></param>
  627. /// <param name="rank"></param>
  628. /// <returns></returns>
  629. public static Fchd15x5Info GetLastJobFchd15x5Info(ref List<Fchd15x5Info> list, string val, int rank)
  630. {
  631. Fchd15x5Info info = new Fchd15x5Info();
  632. if (list != null && list.Count > 0)
  633. {
  634. for (int i = rank - 2; i >= 0; i--)
  635. {
  636. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
  637. if (ZstUtils.GetJob(kjh).Equals(val))
  638. {
  639. return list[i];
  640. }
  641. }
  642. }
  643. return info;
  644. }
  645. /// <summary>
  646. /// 一次奇偶数=val的数据
  647. /// </summary>
  648. /// <param name="val"></param>
  649. /// <param name="rank"></param>
  650. /// <returns></returns>
  651. public static Fchd15x5Info GetLastJogsFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank, int type)
  652. {
  653. Fchd15x5Info info = new Fchd15x5Info();
  654. if (list != null && list.Count > 0)
  655. {
  656. for (int i = rank - 2; i >= 0; i--)
  657. {
  658. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
  659. string dxb = ZstUtils.GetJob(kjh);
  660. string[] dxs = dxb.Split(':');
  661. int d = 0;
  662. int x = 0;
  663. if (dxs != null && dxs.Length > 0)
  664. {
  665. d = TypeConverter.ObjectToInt(dxs[0], 0);
  666. x = TypeConverter.ObjectToInt(dxs[1], 0);
  667. }
  668. if (type == 1)
  669. {
  670. if (d == val)
  671. return list[i];
  672. }
  673. if (type == 2)
  674. {
  675. if (x == val)
  676. return list[i];
  677. }
  678. }
  679. }
  680. return info;
  681. }
  682. /// <summary>
  683. /// 15x5每位号质合的情况
  684. /// </summary>
  685. /// <param name="val"></param>
  686. /// <param name="site"></param>
  687. /// <param name="rank"></param>
  688. /// <returns></returns>
  689. public static Fchd15x5Info GetLastNumZhFchd15x5Info(ref List<Fchd15x5Info> list, int val, int site, int rank)
  690. {
  691. Fchd15x5Info info = new Fchd15x5Info();
  692. if (list != null && list.Count > 0)
  693. {
  694. for (int i = rank - 2; i >= 0; i--)
  695. {
  696. if (site == 1)
  697. {
  698. if (ZstUtils.GetZh(list[i].n1) == val)
  699. {
  700. return list[i];
  701. }
  702. }
  703. if (site == 2)
  704. {
  705. if (ZstUtils.GetZh(list[i].n2) == val)
  706. {
  707. return list[i];
  708. }
  709. }
  710. if (site == 3)
  711. {
  712. if (ZstUtils.GetZh(list[i].n3) == val)
  713. {
  714. return list[i];
  715. }
  716. }
  717. if (site == 4)
  718. {
  719. if (ZstUtils.GetZh(list[i].n4) == val)
  720. {
  721. return list[i];
  722. }
  723. }
  724. if (site == 5)
  725. {
  726. if (ZstUtils.GetZh(list[i].n5) == val)
  727. {
  728. return list[i];
  729. }
  730. }
  731. }
  732. }
  733. return info;
  734. }
  735. /// <summary>
  736. /// 上一次质合比=val的数据
  737. /// </summary>
  738. /// <param name="val"></param>
  739. /// <param name="rank"></param>
  740. /// <returns></returns>
  741. public static Fchd15x5Info GetLastZhbFchd15x5Info(ref List<Fchd15x5Info> list, string val, int rank)
  742. {
  743. Fchd15x5Info info = new Fchd15x5Info();
  744. if (list != null && list.Count > 0)
  745. {
  746. for (int i = rank - 2; i >= 0; i--)
  747. {
  748. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
  749. if (ZstUtils.GetZhb(kjh).Equals(val))
  750. {
  751. return list[i];
  752. }
  753. }
  754. }
  755. return info;
  756. }
  757. /// <summary>
  758. /// 上一次质合数=val的数据
  759. /// </summary>
  760. /// <param name="val"></param>
  761. /// <param name="rank"></param>
  762. /// <returns></returns>
  763. public static Fchd15x5Info GetLastZhgsFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank, int type)
  764. {
  765. Fchd15x5Info info = new Fchd15x5Info();
  766. if (list != null && list.Count > 0)
  767. {
  768. for (int i = rank - 2; i >= 0; i--)
  769. {
  770. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
  771. string dxb = ZstUtils.GetZhb(kjh);
  772. string[] dxs = dxb.Split(':');
  773. int d = 0;
  774. int x = 0;
  775. if (dxs != null && dxs.Length > 0)
  776. {
  777. d = TypeConverter.ObjectToInt(dxs[0], 0);
  778. x = TypeConverter.ObjectToInt(dxs[1], 0);
  779. }
  780. if (type == 1)
  781. {
  782. if (d == val)
  783. return list[i];
  784. }
  785. if (type == 2)
  786. {
  787. if (x == val)
  788. return list[i];
  789. }
  790. }
  791. }
  792. return info;
  793. }
  794. /// <summary>
  795. /// 15x5每一位上一次012路情况的数据
  796. /// </summary>
  797. /// <param name="val"></param>
  798. /// <param name="site"></param>
  799. /// <param name="rank"></param>
  800. /// <returns></returns>
  801. public static Fchd15x5Info GetLastNum012Fchd15x5Info(ref List<Fchd15x5Info> list, int val, int site, int rank)
  802. {
  803. Fchd15x5Info info = new Fchd15x5Info();
  804. if (list != null && list.Count > 0)
  805. {
  806. for (int i = rank - 2; i >= 0; i--)
  807. {
  808. if (site == 1)
  809. {
  810. if (ZstUtils.Get012(list[i].n1) == val)
  811. {
  812. return list[i];
  813. }
  814. }
  815. if (site == 2)
  816. {
  817. if (ZstUtils.Get012(list[i].n2) == val)
  818. {
  819. return list[i];
  820. }
  821. }
  822. if (site == 3)
  823. {
  824. if (ZstUtils.Get012(list[i].n3) == val)
  825. {
  826. return list[i];
  827. }
  828. }
  829. if (site == 4)
  830. {
  831. if (ZstUtils.Get012(list[i].n4) == val)
  832. {
  833. return list[i];
  834. }
  835. }
  836. if (site == 5)
  837. {
  838. if (ZstUtils.Get012(list[i].n5) == val)
  839. {
  840. return list[i];
  841. }
  842. }
  843. }
  844. }
  845. return info;
  846. }
  847. /// <summary>
  848. /// 012个数
  849. /// </summary>
  850. /// <param name="val"></param>
  851. /// <param name="rank"></param>
  852. /// <returns></returns>
  853. public static Fchd15x5Info GetLast012gsFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank, int type)
  854. {
  855. Fchd15x5Info info = new Fchd15x5Info();
  856. if (list != null && list.Count > 0)
  857. {
  858. for (int i = rank - 2; i >= 0; i--)
  859. {
  860. List<int> kjh = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
  861. int c1 = ZstUtils.Get012Count(0, kjh);
  862. int c2 = ZstUtils.Get012Count(1, kjh);
  863. int c3 = ZstUtils.Get012Count(2, kjh);
  864. if (type == 0)
  865. {
  866. if (c1 == val)
  867. return list[i];
  868. }
  869. if (type == 1)
  870. {
  871. if (c2 == val)
  872. return list[i];
  873. }
  874. if (type == 2)
  875. {
  876. if (c3 == val)
  877. return list[i];
  878. }
  879. }
  880. }
  881. return info;
  882. }
  883. /// <summary>
  884. /// 15x5和值范围上一次的情况
  885. /// </summary>
  886. /// <param name="shz"></param>
  887. /// <param name="ehz"></param>
  888. /// <param name="rank"></param>
  889. /// <returns></returns>
  890. public static Fchd15x5Info GetLastHzFchd15x5Info(ref List<Fchd15x5Info> list, int shz, int ehz, int rank)
  891. {
  892. Fchd15x5Info info = new Fchd15x5Info();
  893. if (list != null && list.Count > 0)
  894. {
  895. for (int i = rank - 2; i >= 0; i--)
  896. {
  897. if (list[i].hz >= shz && list[i].hz <= ehz)
  898. {
  899. return list[i];
  900. }
  901. }
  902. }
  903. return info;
  904. }
  905. /// <summary>
  906. /// 和值上一次奇偶的情况
  907. /// </summary>
  908. /// <param name="val"></param>
  909. /// <param name="rank"></param>
  910. /// <returns></returns>
  911. public static Fchd15x5Info GetLastHzJoFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  912. {
  913. Fchd15x5Info info = new Fchd15x5Info();
  914. if (list != null && list.Count > 0)
  915. {
  916. for (int i = rank - 2; i >= 0; i--)
  917. {
  918. if (ZstUtils.GetJo(list[i].hz) == val)
  919. {
  920. return list[i];
  921. }
  922. }
  923. }
  924. return info;
  925. }
  926. /// <summary>
  927. /// 和值上一次012的情况
  928. /// </summary>
  929. /// <param name="val"></param>
  930. /// <param name="rank"></param>
  931. /// <returns></returns>
  932. public static Fchd15x5Info GetLastHz012Fchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  933. {
  934. Fchd15x5Info info = new Fchd15x5Info();
  935. if (list != null && list.Count > 0)
  936. {
  937. for (int i = rank - 2; i >= 0; i--)
  938. {
  939. if (ZstUtils.Get012(list[i].hz) == val)
  940. {
  941. return list[i];
  942. }
  943. }
  944. }
  945. return info;
  946. }
  947. /// <summary>
  948. /// 上一次和尾的数据
  949. /// </summary>
  950. /// <param name="val"></param>
  951. /// <param name="rank"></param>
  952. /// <returns></returns>
  953. public static Fchd15x5Info GetLastHwFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  954. {
  955. Fchd15x5Info info = new Fchd15x5Info();
  956. if (list != null && list.Count > 0)
  957. {
  958. for (int i = rank - 2; i >= 0; i--)
  959. {
  960. if (ZstUtils.GetHw(list[i].hz) == val)
  961. {
  962. return list[i];
  963. }
  964. }
  965. }
  966. return info;
  967. }
  968. /// <summary>
  969. /// 上一次和尾大小的数据
  970. /// </summary>
  971. /// <param name="val"></param>
  972. /// <param name="rank"></param>
  973. /// <returns></returns>
  974. public static Fchd15x5Info GetLastHwDxFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  975. {
  976. Fchd15x5Info info = new Fchd15x5Info();
  977. if (list != null && list.Count > 0)
  978. {
  979. for (int i = rank - 2; i >= 0; i--)
  980. {
  981. if (ZstUtils.GetDx(ZstUtils.GetHw(list[i].hz)) == val)
  982. {
  983. return list[i];
  984. }
  985. }
  986. }
  987. return info;
  988. }
  989. /// <summary>
  990. /// 上一次和尾奇偶的情况
  991. /// </summary>
  992. /// <param name="val"></param>
  993. /// <param name="rank"></param>
  994. /// <returns></returns>
  995. public static Fchd15x5Info GetLastHwJoFchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  996. {
  997. Fchd15x5Info info = new Fchd15x5Info();
  998. if (list != null && list.Count > 0)
  999. {
  1000. for (int i = rank - 2; i >= 0; i--)
  1001. {
  1002. if (ZstUtils.GetJo(ZstUtils.GetHw(list[i].hz)) == val)
  1003. {
  1004. return list[i];
  1005. }
  1006. }
  1007. }
  1008. return info;
  1009. }
  1010. /// <summary>
  1011. /// 上一次和尾012路的情况
  1012. /// </summary>
  1013. /// <param name="val"></param>
  1014. /// <param name="rank"></param>
  1015. /// <returns></returns>
  1016. public static Fchd15x5Info GetLastHw012Fchd15x5Info(ref List<Fchd15x5Info> list, int val, int rank)
  1017. {
  1018. Fchd15x5Info info = new Fchd15x5Info();
  1019. if (list != null && list.Count > 0)
  1020. {
  1021. for (int i = rank - 2; i >= 0; i--)
  1022. {
  1023. if (ZstUtils.Get012(ZstUtils.GetHw(list[i].hz)) == val)
  1024. {
  1025. return list[i];
  1026. }
  1027. }
  1028. }
  1029. return info;
  1030. }
  1031. #endregion
  1032. #region 开奖公告相关方法
  1033. /// <summary>
  1034. /// 最近30期开奖数据,完整开奖信息,有缓存
  1035. /// </summary>
  1036. /// <returns></returns>
  1037. public static List<Fchd15x5LongInfo> GetFchd15x5ListTop30()
  1038. {
  1039. string key = string.Format(CacheKeys.FCHD15X5_KJH_DATA);
  1040. List<Fchd15x5LongInfo> list = cache.GetObject<List<Fchd15x5LongInfo>>(key) as List<Fchd15x5LongInfo>;
  1041. if (list == null)
  1042. {
  1043. list = Fchd15x5Data.GetFchd15x5Top30();
  1044. cache.AddObject(key, list, (int)CacheTime.Kjh);
  1045. }
  1046. return list;
  1047. }
  1048. /// <summary>
  1049. /// 获取最新一期开奖信息,完整开奖信息,有缓存
  1050. /// </summary>
  1051. /// <returns></returns>
  1052. public static Fchd15x5LongInfo GetFchd15x5InfoTop1(ref List<Fchd15x5LongInfo> list)
  1053. {
  1054. Fchd15x5LongInfo info = new Fchd15x5LongInfo();
  1055. if (list.Count > 0)
  1056. {
  1057. info = list[0];
  1058. }
  1059. return info;
  1060. }
  1061. /// <summary>
  1062. /// 根据期数返回某期完整开奖信息,无缓存
  1063. /// </summary>
  1064. /// <param name="qi"></param>
  1065. /// <returns></returns>
  1066. public static Fchd15x5LongInfo GetFchd15x5InfoByqi(int qi)
  1067. {
  1068. return Fchd15x5Data.GetFchd15x5InfoByQi(qi);
  1069. }
  1070. /// <summary>
  1071. /// 返回某年对应的期数列表,有缓存
  1072. /// </summary>
  1073. /// <param name="year"></param>
  1074. /// <returns></returns>
  1075. public static List<int> GetFchd15x5QiListByYear(int year)
  1076. {
  1077. string key = string.Format(CacheKeys.FCHD15X5_KJH_DATA + "/qilistbyyear/{0}", year);
  1078. List<int> list = cache.GetObject<List<int>>(key) as List<int>;
  1079. if (list == null)
  1080. {
  1081. list = Fchd15x5Data.GetFchd15x5QiListByYear(year);
  1082. cache.AddObject(key, list, (int)CacheTime.System);
  1083. }
  1084. return list;
  1085. }
  1086. #endregion
  1087. }
  1088. }