TrendToolRule.cs 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using CB.Entity;
  6. using CB.Common;
  7. using System.Collections;
  8. using CB.Data;
  9. using System.IO;
  10. namespace CB.TrendTool
  11. {
  12. public class TrendToolRule
  13. {
  14. public static bool NumberIsNeed(string OneNumber, bool IsInclude, List<string> FilterData, TrendToolInfo content, FilterType filterType)
  15. {
  16. bool isRemove = false;
  17. List<string> results = new List<string>();
  18. List<string> numSplits = new List<string>(OneNumber.Split(','));
  19. //如果填写了范围按范围取值
  20. if (content.IndexStart != -1 && content.IndexEnd != -1 && content.IndexEnd >= content.IndexStart)
  21. {
  22. int skipIndex = content.IndexStart;
  23. int takeCount = content.IndexEnd - content.IndexStart + 1;
  24. numSplits = numSplits.Skip(skipIndex).Take(takeCount).ToList();
  25. }
  26. switch (filterType)
  27. {
  28. case FilterType.Filter_ShaHao:
  29. results = Filter_ShaHaoRule(OneNumber, IsInclude, FilterData, content);
  30. break;
  31. //case FilterType.Filter_DanMa:
  32. // results = Filter_DanMaRule(OneNumber, IsInclude, FilterData, content);
  33. // break;
  34. case FilterType.Filter_ShunZi:
  35. isRemove = Filter_ShunZhiRule(OneNumber, IsInclude, FilterData);
  36. return isRemove;
  37. case FilterType.Filter_ErMaHe:
  38. results = Filter_ErMaHeRule(OneNumber);
  39. break;
  40. case FilterType.Filter_ErMaCha:
  41. results = Filter_ErMaChaRule(OneNumber);
  42. break;
  43. case FilterType.Filter_ErMa:
  44. results = Filter_ErMaRule(OneNumber);
  45. break;
  46. case FilterType.Filter_Filter012:
  47. results = Filter_Filter012Rule(OneNumber);
  48. break;
  49. case FilterType.Filter_HeZhi:
  50. results = Filter_HeZhiRule(OneNumber);
  51. break;
  52. case FilterType.Filter_HeWei:
  53. results = Filter_HeWeiRule(OneNumber);
  54. break;
  55. case FilterType.Filter_KuaDu:
  56. results = Filter_KuaDuRule(OneNumber);
  57. break;
  58. case FilterType.Filter_DaZhongXiao:
  59. results = Filter_DaZhongXiaoRule(OneNumber);
  60. break;
  61. case FilterType.Filter_DaXiao:
  62. results = Filter_DaXiaoRule(OneNumber);
  63. break;
  64. case FilterType.Filter_JiOu:
  65. results = Filter_JiOuRule(OneNumber);
  66. break;
  67. case FilterType.Filter_ZhiHe:
  68. results = Filter_ZhiHeRule(OneNumber);
  69. break;
  70. case FilterType.Filter_ProportionOfJiOu:
  71. results = Filter_ProportionOfJiOuRule(numSplits);
  72. break;
  73. case FilterType.Filter_ZuXuan_ZhiHe:
  74. results = Filter_ZuXuan_ZhiHeRule(OneNumber);
  75. break;
  76. case FilterType.Filter_ZuXuan_JiOu:
  77. results = Filter_ZuXuan_JiOuRule(OneNumber);
  78. break;
  79. case FilterType.Filter_ZuXuan_DaXiao:
  80. results = Filter_ZuXuan_DaXiaoRule(OneNumber);
  81. break;
  82. case FilterType.Filter_ZuXuan_Filter012:
  83. results = Filter_ZuXuan_Filter012Rule(OneNumber);
  84. break;
  85. case FilterType.Filter_HeZhi012:
  86. results = Filter_HeZhi012Rule(OneNumber);
  87. break;
  88. case FilterType.Filte_P5ZhuHe0:
  89. results = Filte_P5ZhuHe0Rule(OneNumber);
  90. break;
  91. case FilterType.Filte_P5ZhuHe1:
  92. results = Filte_P5ZhuHe1Rule(OneNumber);
  93. break;
  94. case FilterType.Filte_P5ZhuHe2:
  95. results = Filte_P5ZhuHe2Rule(OneNumber);
  96. break;
  97. case FilterType.Filter_Ac:
  98. results = Filter_ErAcRule(numSplits);
  99. break;
  100. case FilterType.Filter_FirstJiOu:
  101. results = Filter_FirstJiOuFilter(numSplits);
  102. break;
  103. case FilterType.Filter_LastJiOu:
  104. results = Filter_LastJiOuFilter(numSplits);
  105. break;
  106. case FilterType.Filter_ProportionOfZhiHe:
  107. results = Filter_ProportionOfZhiHeRule(numSplits);
  108. break;
  109. case FilterType.Filter_hzSpan:
  110. results = Filter_hzSpanFilter(numSplits, FilterData);
  111. break;
  112. case FilterType.Filter_LianHaoCount:
  113. results = Filter_LianHaoCountRule(numSplits, content);
  114. break;
  115. case FilterType.Filter_TzCount:
  116. results = Filter_TzCountRule(numSplits);
  117. break;
  118. case FilterType.Filter_ProportionOfDaXiao:
  119. results = Filter_ProportionOfDxRule(numSplits, content);
  120. break;
  121. }
  122. isRemove = IncludeFilter(IsInclude, results, FilterData);
  123. return isRemove;
  124. }
  125. #region 组选过滤
  126. [ToolFunctionAttr("质合过滤-组选-(3D)", FilterType.Filter_ZuXuan_ZhiHe)]
  127. public static List<string> Filter_ZuXuan_ZhiHeRule(string number)
  128. {
  129. List<string> zhi = new List<string>() { "1", "2", "3", "5", "7" };
  130. string[] nums = number.Split(',');
  131. string zhihe = "";
  132. int zhiCount = 0;
  133. foreach (string num in nums)
  134. { if (zhi.Contains(num)) zhiCount++; }
  135. switch (zhiCount)
  136. {
  137. case 0:
  138. zhihe = "全合";
  139. break;
  140. case 1:
  141. zhihe = "两合一质";
  142. break;
  143. case 2:
  144. zhihe = "两质一合";
  145. break;
  146. case 3:
  147. zhihe = "全质";
  148. break;
  149. }
  150. List<string> reData = new List<string>();
  151. reData.Add(zhihe);
  152. return reData;
  153. }
  154. [ToolFunctionAttr("奇偶过滤-组选-(3D)", FilterType.Filter_ZuXuan_JiOu)]
  155. public static List<string> Filter_ZuXuan_JiOuRule(string number)
  156. {
  157. List<string> ji = new List<string>() { "1", "3", "5", "7", "9" };
  158. //List<string> ou = new List<string>() { "0", "2", "4", "6", "8", };
  159. string[] nums = number.Split(',');
  160. string jiou = "";
  161. int jiCount = 0;
  162. foreach (string num in nums)
  163. { if (ji.Contains(num)) jiCount++; }
  164. switch (jiCount)
  165. {
  166. case 0:
  167. jiou = "全偶";
  168. break;
  169. case 1:
  170. jiou = "两偶一奇";
  171. break;
  172. case 2:
  173. jiou = "两奇一偶";
  174. break;
  175. case 3:
  176. jiou = "全奇";
  177. break;
  178. }
  179. List<string> reData = new List<string>();
  180. reData.Add(jiou);
  181. return reData;
  182. }
  183. /// <summary>
  184. /// 大小过滤
  185. /// </summary>
  186. /// <param name="number"></param>
  187. /// <param name="filter"></param>
  188. /// <returns></returns>
  189. [ToolFunctionAttr("大小过滤-组选-(3D)", FilterType.Filter_ZuXuan_DaXiao)]
  190. public static List<string> Filter_ZuXuan_DaXiaoRule(string number)
  191. {
  192. List<string> reData = new List<string>();
  193. List<string> da = new List<string>() { "5", "6", "7", "8", "9" };
  194. string daxiao = "";
  195. //List<string> xiao = new List<string>() { "0", "1", "2", "3", "4", };
  196. string[] nums = number.Split(',');
  197. int daCount = 0;
  198. foreach (string num in nums)
  199. {
  200. if (da.Contains(num)) daCount++;
  201. }
  202. switch (daCount)
  203. {
  204. case 0:
  205. daxiao = "全小";
  206. break;
  207. case 1:
  208. daxiao = "两小一大";
  209. break;
  210. case 2:
  211. daxiao = "两大一小";
  212. break;
  213. case 3:
  214. daxiao = "全大";
  215. break;
  216. }
  217. reData.Add(daxiao);
  218. return reData;
  219. }
  220. [ToolFunctionAttr("012路过滤-组选-(3D)", FilterType.Filter_ZuXuan_Filter012)]
  221. public static List<string> Filter_ZuXuan_Filter012Rule(string Number)
  222. {
  223. string[] nums = Number.Split(',');
  224. string lu = "";
  225. //3个0 3个1 3个2 2个0 2个1 2个2 各1个
  226. int Count0 = 0;
  227. int Count1 = 0;
  228. int Count2 = 0;
  229. foreach (string num in nums)
  230. {
  231. int data = int.Parse(num);
  232. if ((data % 3) == 0) Count0++;
  233. if ((data % 3) == 1) Count1++;
  234. if ((data % 3) == 2) Count2++;
  235. }
  236. if (Count0 == 3) lu = "3个0";
  237. else if (Count0 == 2) lu = "2个0";
  238. else if (Count1 == 3) lu = "3个1";
  239. else if (Count1 == 2) lu = "2个1";
  240. else if (Count2 == 3) lu = "3个2";
  241. else if (Count2 == 2) lu = "2个2";
  242. else lu = "各1个";
  243. List<string> reData = new List<string>();
  244. reData.Add(lu);
  245. return reData;
  246. }
  247. #endregion
  248. #region 一般过滤
  249. [ToolFunctionAttr("大中小过滤-(3D,P3)", FilterType.Filter_DaZhongXiao)]
  250. public static List<string> Filter_DaZhongXiaoRule(string number)
  251. {
  252. List<string> da = new List<string>() { "7", "8", "9" };
  253. List<string> zhong = new List<string>() { "3", "4", "5", "6" };
  254. //List<string> xiao = new List<string>() { "0", "1", "2" };
  255. string[] nums = number.Split(',');
  256. string dazhongxiao = "";
  257. foreach (string num in nums)
  258. {
  259. if (da.Contains(num))
  260. dazhongxiao += "大";
  261. else if (zhong.Contains(num))
  262. dazhongxiao += "中";
  263. else
  264. dazhongxiao += "小";
  265. }
  266. List<string> reData = new List<string>();
  267. reData.Add(dazhongxiao);
  268. return reData;
  269. }
  270. /// <summary>
  271. /// 大小过滤
  272. /// </summary>
  273. /// <param name="number"></param>
  274. /// <param name="filter"></param>
  275. /// <returns></returns>
  276. [ToolFunctionAttr("大小过滤-(3D,P3)", FilterType.Filter_DaXiao)]
  277. public static List<string> Filter_DaXiaoRule(string number)
  278. {
  279. List<string> da = new List<string>() { "5", "6", "7", "8", "9" };
  280. //List<string> xiao = new List<string>() { "0", "1", "2", "3", "4", };
  281. string[] nums = number.Split(',');
  282. string daxiao = "";
  283. List<string> reData = new List<string>();
  284. foreach (string num in nums)
  285. {
  286. if (da.Contains(num))
  287. daxiao += "大";
  288. else
  289. daxiao += "小";
  290. }
  291. reData.Add(daxiao);
  292. return reData;
  293. }
  294. /// <summary>
  295. /// 大小比过滤
  296. /// </summary>
  297. /// <param name="number">单个组合的号码</param>
  298. /// <param name="filter"></param>
  299. /// <returns></returns>
  300. [ToolFunctionAttr("大小比(数字类型比例,例:1:2)", FilterType.Filter_ProportionOfDaXiao)]
  301. public static List<string> Filter_ProportionOfDxRule(List<string> numSplits, TrendToolInfo content)
  302. {
  303. int indexnumber = 0;
  304. switch (content.Id)
  305. {
  306. case 150:
  307. indexnumber = 6;
  308. break;
  309. default:
  310. indexnumber = 18;
  311. break;
  312. }
  313. int d = 0;
  314. int x = 0;
  315. foreach (var item in numSplits)
  316. {
  317. if (TypeConverter.StrToInt(item) > indexnumber)
  318. { d++; }
  319. else
  320. { x++; }
  321. }
  322. List<string> reData = new List<string>();
  323. reData.Add(d.ToString() + ":" + x.ToString());
  324. return reData;
  325. }
  326. /// <summary>
  327. /// 连号组数
  328. /// </summary>
  329. /// <param name="number"></param>
  330. /// <param name="filter"></param>
  331. /// <returns></returns>
  332. [ToolFunctionAttr("连号组数", FilterType.Filter_LianHaoCount)]
  333. public static List<string> Filter_LianHaoCountRule(List<string> numSplits, TrendToolInfo content)
  334. {
  335. int lh = 0;
  336. for (int i = 0; i < numSplits.Count; i++)
  337. {
  338. if (i > 0 && Convert.ToInt32(numSplits[i]) - Convert.ToInt32(numSplits[i - 1]) == 1)
  339. lh++;
  340. }
  341. List<string> reData = new List<string>();
  342. if (lh == 0)
  343. {
  344. reData.Add("无连号");
  345. }
  346. else
  347. {
  348. reData.Add(lh + "连号");
  349. }
  350. return reData;
  351. }
  352. /// <summary>
  353. /// 尾数相同组数
  354. /// </summary>
  355. /// <param name="number"></param>
  356. /// <param name="filter"></param>
  357. /// <returns></returns>
  358. [ToolFunctionAttr("每注中尾数不相同的投注号码", FilterType.Filter_TzCount)]
  359. public static List<string> Filter_TzCountRule(List<string> numSplits)
  360. {
  361. List<int> count = new List<int>();
  362. for (int i = 0; i < numSplits.Count; i++)
  363. {
  364. if (!count.Contains(TypeConverter.StrToInt(numSplits[i]) % 10))
  365. {
  366. count.Add(TypeConverter.StrToInt(numSplits[i]) % 10);
  367. }
  368. }
  369. List<string> reData = new List<string>();
  370. reData.Add((count.Count).ToString());
  371. return reData;
  372. }
  373. [ToolFunctionAttr("杀号过滤和不定位杀过滤-(3D,P3,P5)", FilterType.Filter_ShaHao)]
  374. public static List<string> Filter_ShaHaoRule(string OneNumber, bool IsInclude, List<string> FilterData, TrendToolInfo content)
  375. {
  376. List<string> reData = new List<string>(OneNumber.Split(','));
  377. //如果填写了范围按范围取值
  378. if (content.IndexStart != -1 && content.IndexEnd != -1 && content.IndexEnd >= content.IndexStart)
  379. {
  380. int skipIndex = content.IndexStart;
  381. int takeCount = content.IndexEnd - content.IndexStart + 1;
  382. reData = reData.Skip(skipIndex).Take(takeCount).ToList();
  383. }
  384. return reData;
  385. }
  386. /// <summary>
  387. /// 胆码过滤和不定位胆码过滤
  388. /// </summary>
  389. /// <param name="oneNumber"></param>
  390. /// <param name="IsInclude"></param>
  391. /// <param name="FilterData"></param>
  392. /// <param name="content"></param>
  393. /// <returns></returns>
  394. //public static List<string> Filter_DanMaRule(string oneNumber, bool IsInclude, List<string> FilterData, TrendToolInfo content)
  395. //{
  396. // List<string> reData = new List<string>(oneNumber.Split(','));
  397. // //如果填写了范围按范围取值
  398. // if (content.IndexStart != -1 && content.IndexEnd != -1 && content.IndexEnd >= content.IndexStart)
  399. // {
  400. // int skipIndex = content.IndexStart;
  401. // int takeCount = content.IndexEnd - content.IndexStart + 1;
  402. // reData = reData.Skip(skipIndex).Take(takeCount).ToList();
  403. // }
  404. // return reData;
  405. //}
  406. /// <summary>
  407. /// 和值过滤(区间段)
  408. /// </summary>
  409. [ToolFunctionAttr("和值过滤(区间段)", FilterType.Filter_hzSpan)]
  410. public static List<string> Filter_hzSpanFilter(List<string> numSplits, List<string> FilteData)
  411. {
  412. List<int> sums = new List<int>();
  413. foreach (var item in FilteData)
  414. {
  415. sums.Add(TypeConverter.StrToInt(item));
  416. }
  417. int sum = 0;
  418. foreach (var item in numSplits)
  419. {
  420. sum += TypeConverter.StrToInt(item);
  421. }
  422. List<string> result = new List<string>();
  423. if (sum >= sums.Min() && sum <= sums.Max())
  424. {
  425. result.Add(sums.Min().ToString());
  426. }
  427. else
  428. {
  429. result.Add("");
  430. }
  431. return result;
  432. }
  433. /// <summary>
  434. /// 二码差过滤
  435. /// </summary>
  436. /// <param name="number"></param>
  437. /// <param name="filter"></param>
  438. /// <param name="erma"></param>
  439. /// <returns></returns>
  440. [ToolFunctionAttr("二码差过滤-(3D,P3)", FilterType.Filter_ErMaCha)]
  441. public static List<string> Filter_ErMaChaRule(string number)
  442. {
  443. List<string> nums = new List<string>(number.Split(','));
  444. List<string> ErMaValue = new List<string>();
  445. for (int n1 = 0; n1 < nums.Count; n1++)
  446. {
  447. for (int n2 = n1 + 1; n2 < nums.Count; n2++)
  448. {
  449. string data = string.Empty;
  450. data = Math.Abs(int.Parse(nums[n1]) - int.Parse(nums[n2])).ToString();
  451. if (!ErMaValue.Contains(data))
  452. ErMaValue.Add(data);
  453. }
  454. }
  455. return ErMaValue;
  456. }
  457. /// <summary>
  458. /// 二码和过滤
  459. /// </summary>
  460. /// <param name="number"></param>
  461. /// <param name="filter"></param>
  462. /// <param name="erma"></param>
  463. /// <returns></returns>
  464. [ToolFunctionAttr("二码和过滤-(3D,P3)", FilterType.Filter_ErMaHe)]
  465. public static List<string> Filter_ErMaHeRule(string number)
  466. {
  467. List<string> nums = new List<string>(number.Split(','));
  468. List<string> ErMaValue = new List<string>();
  469. for (int n1 = 0; n1 < nums.Count; n1++)
  470. {
  471. for (int n2 = n1 + 1; n2 < nums.Count; n2++)
  472. {
  473. string data = string.Empty;
  474. data = (int.Parse(nums[n1]) + int.Parse(nums[n2])).ToString();
  475. if (!ErMaValue.Contains(data))
  476. ErMaValue.Add(data);
  477. }
  478. }
  479. return ErMaValue;
  480. }
  481. /// <summary>
  482. /// 首位奇偶过滤
  483. /// </summary>
  484. /// <param name="Numbers"></param>
  485. /// <param name="filter"></param>
  486. /// <param name="list"></param>
  487. /// <param name="filterType"></param>
  488. /// <param name="p"></param>
  489. [ToolFunctionAttr("首位奇偶过滤", FilterType.Filter_FirstJiOu)]
  490. public static List<string> Filter_FirstJiOuFilter(List<string> numSplits)
  491. {
  492. string Lastnumber = numSplits[0];
  493. string result = "";
  494. if (TypeConverter.StrToInt(Lastnumber) % 2 == 0)
  495. {
  496. result = "2";
  497. }
  498. else
  499. {
  500. result = "1";
  501. }
  502. List<string> reData = new List<string>();
  503. reData.Add(result);
  504. return reData;
  505. }
  506. /// <summary>
  507. /// 末位奇偶过滤
  508. /// </summary>
  509. [ToolFunctionAttr("末位奇偶过滤", FilterType.Filter_LastJiOu)]
  510. public static List<string> Filter_LastJiOuFilter(List<string> numSplits)
  511. {
  512. string num = numSplits[numSplits.Count - 1];
  513. string result = "";
  514. if (TypeConverter.StrToInt(num) % 2 == 0)
  515. {
  516. result = "2";
  517. }
  518. else
  519. {
  520. result = "1";
  521. }
  522. List<string> reData = new List<string>();
  523. reData.Add(result);
  524. return reData;
  525. }
  526. [ToolFunctionAttr("二码过滤-(3D,P3)", FilterType.Filter_ErMa)]
  527. public static List<string> Filter_ErMaRule(string number)
  528. {
  529. List<string> nums = new List<string>(number.Split(','));
  530. List<string> ErMaValue = new List<string>();
  531. for (int n1 = 0; n1 < nums.Count; n1++)
  532. {
  533. for (int n2 = n1 + 1; n2 < nums.Count; n2++)
  534. {
  535. string data = string.Empty;
  536. var erma = new List<string>() { nums[n1], nums[n2] };
  537. erma.Sort();
  538. data = erma[0] + erma[1];
  539. if (!ErMaValue.Contains(data))
  540. ErMaValue.Add(data);
  541. }
  542. }
  543. return ErMaValue;
  544. }
  545. [ToolFunctionAttr("012路过滤-(3D,P3))", FilterType.Filter_Filter012)]
  546. public static List<string> Filter_Filter012Rule(string number)
  547. {
  548. string[] nums = number.Split(',');
  549. string lu = "";
  550. foreach (string num in nums)
  551. {
  552. int data = int.Parse(num);
  553. lu += (data % 3).ToString();
  554. }
  555. List<string> reData = new List<string>();
  556. reData.Add(lu);
  557. return reData;
  558. }
  559. /// <summary>
  560. /// 和值过滤
  561. /// </summary>
  562. /// <param name="OneNumber"></param>
  563. /// <param name="IsInclude"></param>
  564. /// <param name="FilterData"></param>
  565. /// <returns></returns>
  566. [ToolFunctionAttr("和值过滤-(3D,P3)", FilterType.Filter_HeZhi)]
  567. public static List<string> Filter_HeZhiRule(string OneNumber)
  568. {
  569. string[] nums = OneNumber.Split(',');
  570. int data = 0;
  571. foreach (string num in nums)
  572. {
  573. data += Convert.ToInt32(num);
  574. }
  575. List<string> reData = new List<string>();
  576. string sdata = data.ToString("00");
  577. reData.Add(sdata);
  578. return reData;
  579. }
  580. [ToolFunctionAttr("和尾过滤-(3D,P3,P5)", FilterType.Filter_HeWei)]
  581. public static List<string> Filter_HeWeiRule(string number)
  582. {
  583. string[] nums = number.Split(',');
  584. int idata = 0;
  585. foreach (string num in nums)
  586. {
  587. idata += Convert.ToInt32(num);
  588. }
  589. string hewei = idata.ToString();
  590. List<string> reData = new List<string>();
  591. //取最后一位
  592. string sdata = hewei.Substring(hewei.Length - 1, 1);
  593. reData.Add(sdata);
  594. return reData;
  595. }
  596. [ToolFunctionAttr("顺子过滤-(3D,P3)", FilterType.Filter_ShunZi)]
  597. public static bool Filter_ShunZhiRule(string OneNumber, bool IsInclude, List<string> FilterData)
  598. {
  599. string ShunZhi = FilterData.First();
  600. if (ShunZhi == "0")
  601. { return false; }
  602. //对数组排序
  603. List<string> nums = new List<string>(OneNumber.Split(',')).OrderBy(x => int.Parse(x)).ToList();
  604. int idata1 = Math.Abs(Convert.ToInt32(nums[0]) - Convert.ToInt32(nums[1]));
  605. int idata2 = Math.Abs(Convert.ToInt32(nums[1]) - Convert.ToInt32(nums[2]));
  606. if (ShunZhi == "1")//过滤顺子
  607. {
  608. if (idata1 == idata2 && idata1 == 1)
  609. { return true; }
  610. }
  611. else if (ShunZhi == "3")
  612. {
  613. if (idata1 == 1 || idata2 == 1)
  614. { return true; }
  615. }
  616. return false;
  617. }
  618. [ToolFunctionAttr("跨度过滤-(3D,P3)", FilterType.Filter_KuaDu)]
  619. public static List<string> Filter_KuaDuRule(string number)
  620. {
  621. List<string> numorder = new List<string>(number.Split(',')).OrderBy(x => int.Parse(x)).ToList();
  622. //最大值
  623. int maxnum = int.Parse(numorder[numorder.Count - 1]);
  624. //最小值
  625. int min = int.Parse(numorder[0]);
  626. List<string> reData = new List<string>();
  627. string sdata = (maxnum - min).ToString();
  628. reData.Add(sdata);
  629. return reData;
  630. }
  631. [ToolFunctionAttr("质合过滤-(3D,P3)", FilterType.Filter_ZhiHe)]
  632. public static List<string> Filter_ZhiHeRule(string number)
  633. {
  634. List<string> zhi = new List<string>() { "1", "2", "3", "5", "7" };
  635. string[] nums = number.Split(',');
  636. string zhihe = "";
  637. foreach (string num in nums)
  638. {
  639. if (zhi.Contains(num))
  640. { zhihe += "质"; }
  641. else
  642. { zhihe += "合"; }
  643. }
  644. List<string> reData = new List<string>();
  645. reData.Add(zhihe);
  646. return reData;
  647. }
  648. /// <summary>
  649. /// 奇偶过滤
  650. /// </summary>
  651. /// <param name="number"></param>
  652. /// <param name="filter"></param>
  653. /// <returns></returns>
  654. [ToolFunctionAttr("奇偶过滤-(3D,P3)", FilterType.Filter_JiOu)]
  655. public static List<string> Filter_JiOuRule(string number)
  656. {
  657. List<string> ji = new List<string>() { "1", "3", "5", "7", "9" };
  658. //List<string> ou = new List<string>() { "0", "2", "4", "6", "8", };
  659. string[] nums = number.Split(',');
  660. string jiou = "";
  661. foreach (string num in nums)
  662. {
  663. if (ji.Contains(num))
  664. jiou += "奇";
  665. else
  666. jiou += "偶";
  667. }
  668. List<string> reData = new List<string>();
  669. reData.Add(jiou);
  670. return reData;
  671. }
  672. /// <summary>
  673. /// 奇偶比过滤
  674. /// </summary>
  675. /// <param name="number"></param>
  676. /// <param name="filter"></param>
  677. /// <returns></returns>
  678. [ToolFunctionAttr("奇偶比过滤(数字类型比例,例:1:2)", FilterType.Filter_ProportionOfJiOu)]
  679. public static List<string> Filter_ProportionOfJiOuRule(List<string> numSplits)
  680. {
  681. int ji = 0;
  682. int ou = 0;
  683. foreach (string item in numSplits)
  684. {
  685. if (TypeConverter.StrToInt(item) % 2 == 0)
  686. { ou++; }
  687. else
  688. { ji++; }
  689. }
  690. List<string> reData = new List<string>();
  691. reData.Add(ji.ToString() + ":" + ou.ToString());
  692. return reData;
  693. }
  694. /// <summary>
  695. /// AC-过滤
  696. /// </summary>
  697. /// <param name="numSplits"></param>
  698. /// <returns></returns>
  699. [ToolFunctionAttr("AC值过滤", FilterType.Filter_Ac)]
  700. public static List<string> Filter_ErAcRule(List<string> numSplits)
  701. {
  702. List<string> result = GetCombination(numSplits, 2);
  703. ArrayList acarray = new ArrayList();
  704. int tpac = 0;
  705. for (int i = 0; i < result.Count; i++)
  706. {
  707. string[] tp = result[i].Split(',');
  708. int tmp = Math.Abs(Convert.ToInt32(tp[0]) - Convert.ToInt32(tp[1]));
  709. if (!acarray.Contains(tmp))
  710. {
  711. tpac++;
  712. acarray.Add(tmp);
  713. }
  714. }
  715. List<string> reData = new List<string>();
  716. reData.Add((tpac - (numSplits.Count - 1)).ToString());
  717. return reData;
  718. }
  719. /// <summary>
  720. /// 组合算法
  721. /// </summary>
  722. /// <param name="data">组合源数据</param>
  723. /// <param name="count">所选组合个数</param>
  724. /// <returns></returns>
  725. private static List<string> GetCombination(List<string> data, int count)
  726. {
  727. Dictionary<string, int> dic = new Dictionary<string, int>();
  728. List<string> output = new List<string>();
  729. for (int i = 0; i < data.Count; i++)
  730. {
  731. dic.Add(data[i], i);
  732. }
  733. SelectN(dic, data, count, 1, ref output);
  734. return output;
  735. }
  736. /// <summary>
  737. /// 字典组合算法
  738. /// </summary>
  739. /// <param name="dd"></param>
  740. /// <param name="data"></param>
  741. /// <param name="count"></param>
  742. /// <param name="times"></param>
  743. /// <param name="output"></param>
  744. private static void SelectN(Dictionary<string, int> dd, List<string> data, int count, int times, ref List<string> output)
  745. {
  746. Dictionary<string, int> dic = new Dictionary<string, int>();
  747. foreach (KeyValuePair<string, int> kv in dd)
  748. {
  749. for (int i = kv.Value + 1; i < data.Count; i++)
  750. {
  751. if (times < count - 1)
  752. {
  753. dic.Add(kv.Key + "," + data[i], i);
  754. }
  755. else
  756. {
  757. output.Add(kv.Key + "," + data[i]);
  758. }
  759. }
  760. }
  761. times++;
  762. if (dic.Count > 0)
  763. {
  764. SelectN(dic, data, count, times, ref output);
  765. }
  766. }
  767. /// <summary>
  768. /// 质合比过滤(通用)
  769. /// </summary>
  770. /// <param name="number"></param>
  771. /// <param name="filter"></param>
  772. /// <returns></returns>
  773. [ToolFunctionAttr("质合比(数字类型比例,例:1:2)", FilterType.Filter_ProportionOfZhiHe)]
  774. public static List<string> Filter_ProportionOfZhiHeRule(List<string> numSplits)
  775. {
  776. int[] znumbers = { 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31 };
  777. int z = 0;
  778. int h = 0;
  779. foreach (var item in numSplits)
  780. {
  781. if (znumbers.Contains(TypeConverter.StrToInt(item)))
  782. { z++; }
  783. else
  784. { h++; }
  785. }
  786. List<string> reData = new List<string>();
  787. reData.Add(z.ToString() + ":" + h.ToString());
  788. return reData;
  789. }
  790. [ToolFunctionAttr("和值012路过滤-(P5)", FilterType.Filter_HeZhi012)]
  791. public static List<string> Filter_HeZhi012Rule(string number)
  792. {
  793. string[] nums = number.Split(',');
  794. int data = 0;
  795. foreach (string num in nums)
  796. {
  797. data += Convert.ToInt32(num);
  798. }
  799. List<string> reData = new List<string>();
  800. string sdata = (data % 3).ToString();
  801. reData.Add(sdata);
  802. return reData;
  803. }
  804. [ToolFunctionAttr("0路组合式形态过滤-(P5)", FilterType.Filte_P5ZhuHe0)]
  805. public static List<string> Filte_P5ZhuHe0Rule(string number)
  806. {
  807. string xt = string.Empty;
  808. List<string> nums = new List<string>(number.Split(','));
  809. int data = 0;
  810. foreach (string num in nums)
  811. { data += Convert.ToInt32(num); }
  812. xt = P5ZhuHe012Rule(data, 0, nums);
  813. List<string> result = new List<string>() { xt };
  814. return result;
  815. }
  816. [ToolFunctionAttr("1路组合式形态过滤-(P5)", FilterType.Filte_P5ZhuHe1)]
  817. public static List<string> Filte_P5ZhuHe1Rule(string number)
  818. {
  819. string xt = string.Empty;
  820. List<string> nums = new List<string>(number.Split(','));
  821. int data = 0;
  822. foreach (string num in nums)
  823. { data += Convert.ToInt32(num); }
  824. xt = P5ZhuHe012Rule(data, 1, nums);
  825. List<string> result = new List<string>() { xt };
  826. return result;
  827. }
  828. [ToolFunctionAttr("2路组合式形态过滤-(P5)", FilterType.Filte_P5ZhuHe2)]
  829. public static List<string> Filte_P5ZhuHe2Rule(string number)
  830. {
  831. string xt = string.Empty;
  832. List<string> nums = new List<string>(number.Split(','));
  833. int data = 0;
  834. foreach (string num in nums)
  835. { data += Convert.ToInt32(num); }
  836. xt = P5ZhuHe012Rule(data, 2, nums);
  837. List<string> result = new List<string>() { xt };
  838. return result;
  839. }
  840. #endregion
  841. #region 特殊过滤
  842. [ToolFunctionAttr("组合选项-特殊方法-(3D,P3)", FilterType.Filter_ZuHe)]
  843. public static void SpecialFilter_ZuHeFilter(ref List<string> Numbers, FilterType ft, bool IsSave)
  844. {
  845. string zuhe = "";
  846. string[] filters = new string[] { "zuhe3", "zuhe6", "baozi" };
  847. //组三,组六,豹子
  848. foreach (string filter in filters)
  849. {
  850. string f = WRequest.GetString(filter);
  851. if (f == "组三") f = "1";
  852. else if (f == "组六") f = "0";
  853. else if (f == "豹子") f = "3";
  854. zuhe += string.IsNullOrEmpty(f) ? "" : f + ",";
  855. }
  856. if (!string.IsNullOrEmpty(zuhe))
  857. {
  858. for (int i = 0; i < Numbers.Count; i++)
  859. {
  860. List<string> No = new List<string>(Numbers[i].Split(','));
  861. //组六sameCount为0,都不等,
  862. //组三sameCount为1,有两个数相等
  863. //豹子sameCount为3,有三个数相等
  864. int sameCount = 0;
  865. if (No[0] == No[1]) sameCount++;
  866. if (No[1] == No[2]) sameCount++;
  867. if (No[0] == No[2]) sameCount++;
  868. List<int> filterDataList = new List<int>(zuhe.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList());
  869. if (!filterDataList.Contains(sameCount))
  870. { Numbers.RemoveAt(i); i--; }
  871. }
  872. }
  873. //直选还是组选过滤
  874. string zhizuxuan = WRequest.GetString("zuhe");
  875. if ("组选" == zhizuxuan) zhizuxuan = "1";
  876. if (zhizuxuan == "1")
  877. {
  878. //组选 即123,321算一个号码,直选即123,321算2个号码,
  879. List<string> NewNumber = new List<string>();
  880. for (int i = 0; i < Numbers.Count; i++)
  881. {
  882. List<string> No = new List<string>(Numbers[i].Split(','));
  883. No.Sort();
  884. string Num = string.Join(",", No.ToArray());
  885. if (!NewNumber.Contains(Num))
  886. { NewNumber.Add(Num); }
  887. else
  888. { Numbers.RemoveAt(i); i--; }
  889. }
  890. }
  891. }
  892. [ToolFunctionAttr("双色球中六保五", FilterType.Filter_ZlBw)]
  893. public static void SpecialFilter_ZlBwFilter(int Id, ref List<string> Numbers, FilterType filterType, bool IsSave)
  894. {
  895. List<TrendToolInfo> Childs = new List<TrendToolInfo>();
  896. //Childs = TrendToolService.ChildToList(new TrendToolInfo() { Id = Id }).ToList();
  897. Childs = Caches.GetTrendToolChildList(new TrendToolInfo() { Id = Id }).ToList();
  898. TrendToolInfo include = Childs.Find(x => x.FilterCodeType == FilterCodeType.Include);
  899. //内容项目
  900. List<TrendToolInfo> contents = Childs.FindAll(x => x.FilterCodeType == FilterCodeType.Content);
  901. string ContentData = GetContentsData(contents[0], filterType);
  902. List<string> FilterData = new List<string>(ContentData.Split(','));
  903. if (string.IsNullOrEmpty(ContentData)) return;
  904. StringBuilder str = new StringBuilder();
  905. string result = string.Empty;
  906. str = GetSsqHm("ssqhm.txt");
  907. str = str.Replace("\n", " ");
  908. string[] str1 = str.ToString().Split(',');
  909. int numberCount = FilterData.Count;
  910. string[] str2 = str1[numberCount - 8].Replace(" ", "+").Split('+');
  911. int mod6 = 0;
  912. int count = 6;
  913. for (int i = 0; i < str2.Length; i++)
  914. {
  915. string[] str3 = str2[i].Replace(" ", "+").Split('+');
  916. for (int j = 0; j < str3.Length; j++)
  917. {
  918. if (str3[j].Trim().Length > 0)
  919. {
  920. mod6 = mod6 + 1;
  921. result += FilterData[Convert.ToInt32(str3[j]) - 1];
  922. if (mod6 % count == 0)
  923. {
  924. result = result.Substring(0, result.Length);
  925. result += "+";
  926. }
  927. else
  928. {
  929. result += ",";
  930. }
  931. }
  932. }
  933. }
  934. result = result.Substring(0, result.Length - 1);
  935. string[] listtxt = result.Split('+');
  936. // int zhushu = listtxt.Length;
  937. foreach (string t in listtxt)
  938. { Numbers.Add(t.Substring(0, t.Length)); }
  939. }
  940. private static string GetContentsData(TrendToolInfo content, FilterType filterType)
  941. {
  942. string requestName = ToolUtility.FilterNamePrefix + content.Id.ToString();
  943. string ContentData = WRequest.GetString(requestName).Trim().Replace(" ", "");
  944. switch (filterType)
  945. {
  946. case FilterType.Filter_HeZhi012:
  947. if (ContentData == "0路和值")
  948. { ContentData = "0"; }
  949. else if (ContentData == "1路和值")
  950. { ContentData = "1"; }
  951. else if (ContentData == "2路和值")
  952. { ContentData = "2"; }
  953. break;
  954. case FilterType.Filter_ShunZi:
  955. if ("过滤顺子" == ContentData)
  956. { ContentData = "1"; }
  957. else if ("过滤半顺子" == ContentData)
  958. { ContentData = "3"; }
  959. else ContentData = "0";
  960. break;
  961. }
  962. return ContentData;
  963. }
  964. /// <summary>
  965. /// 获取基础数据
  966. /// </summary>
  967. /// <param name="txtName">基础数据名称</param>
  968. /// <returns></returns>
  969. private static StringBuilder GetSsqHm(string txtName)
  970. {
  971. StringBuilder str = new StringBuilder();
  972. FileStream fs = new FileStream(System.AppDomain.CurrentDomain.BaseDirectory + "//tool//inc//" + txtName, FileMode.Open, FileAccess.Read);
  973. StreamReader reader = new StreamReader(fs); ;
  974. reader.BaseStream.Seek(0, SeekOrigin.Begin);
  975. string strLine = reader.ReadLine();
  976. while (strLine != null)
  977. {
  978. str.Append(strLine + "\n");
  979. strLine = reader.ReadLine();
  980. }
  981. if (reader != null)
  982. reader.Close();
  983. if (fs != null)
  984. fs.Close();
  985. return str;
  986. }
  987. [ToolFunctionAttr("七乐彩中七保六", FilterType.Filter_ZqBl)]
  988. public static void SpecialFilter_ZqBlFilter(int id, ref List<string> Numbers, FilterType filterType, bool IsSave)
  989. {
  990. List<TrendToolInfo> Childs = new List<TrendToolInfo>();
  991. //Childs = TrendToolService.ChildToList(new TrendToolInfo() { Id = id }).ToList();
  992. Childs = Caches.GetTrendToolChildList(new TrendToolInfo() { Id = id }).ToList();
  993. TrendToolInfo include = Childs.Find(x => x.FilterCodeType == FilterCodeType.Include);
  994. //内容项目
  995. List<TrendToolInfo> contents = Childs.FindAll(x => x.FilterCodeType == FilterCodeType.Content);
  996. string ContentData = GetContentsData(contents[0], filterType);
  997. List<string> FilterData = new List<string>(ContentData.Split(','));
  998. string contentData = GetContentsData(contents[0], filterType);
  999. string[] listnum = contentData.Split(',');
  1000. if (listnum.Length == 0)
  1001. {
  1002. Numbers.Add("没有选择红球基本号码,请重新选择...");
  1003. return;
  1004. }
  1005. if (listnum.Length < 8 || listnum.Length > 20)
  1006. {
  1007. Numbers.Add("红球基本号只能是8至20个,请返回重新选号...");
  1008. return;
  1009. }
  1010. StringBuilder str = new StringBuilder();
  1011. string result = string.Empty;
  1012. str = GetSsqHm("qlchm.txt");
  1013. str = str.Replace("\n", " ");
  1014. string[] str1 = str.ToString().Split(',');
  1015. int numberCount = FilterData.Count;
  1016. string[] str2 = str1[numberCount - 8].Replace(" ", "+").Split('+');
  1017. int mod6 = 0;
  1018. int count = 7;
  1019. for (int i = 0; i < str2.Length; i++)
  1020. {
  1021. string[] str3 = str2[i].Replace(" ", "+").Split('+');
  1022. for (int j = 0; j < str3.Length; j++)
  1023. {
  1024. if (str3[j].Trim().Length > 0)
  1025. {
  1026. mod6 = mod6 + 1;
  1027. result += FilterData[Convert.ToInt32(str3[j]) - 1];
  1028. if (mod6 % count == 0)
  1029. {
  1030. result = result.Substring(0, result.Length);
  1031. result += "+";
  1032. }
  1033. else
  1034. {
  1035. result += ",";
  1036. }
  1037. }
  1038. }
  1039. }
  1040. result = result.Substring(0, result.Length - 1);
  1041. string[] listtxt = result.Split('+');
  1042. ///int zhushu = listtxt.Length;
  1043. Numbers.AddRange(listtxt.Select(t => t.Substring(0, t.Length)));
  1044. }
  1045. [ToolFunctionAttr("大乐透5保4旋转矩阵", FilterType.Filter_Dlt5b4)]
  1046. public static void SpecialFilter_Dlt5b4Filter(int Id, ref List<string> Numbers, FilterType filterType, bool IsSave)
  1047. {
  1048. string result = string.Empty;
  1049. List<TrendToolInfo> Childs = new List<TrendToolInfo>();
  1050. //Childs = TrendToolService.ChildToList(new TrendToolInfo() { Id = Id }).ToList();
  1051. Childs = Caches.GetTrendToolChildList(new TrendToolInfo() { Id = Id }).ToList();
  1052. //内容项目
  1053. List<TrendToolInfo> contents = Childs.FindAll(x => x.FilterCodeType == FilterCodeType.Content);
  1054. string contentData = GetContentsData(contents[0], filterType);
  1055. string[] listnum = contentData.Split(',');
  1056. if (listnum.Length == 0)
  1057. {
  1058. Numbers.Add("没有选择红球基本号码,请重新选择...");
  1059. return;
  1060. }
  1061. if (listnum.Length < 7 || listnum.Length > 18)
  1062. {
  1063. Numbers.Add("红球基本号只能是7至18个,请返回重新选号...");
  1064. return;
  1065. }
  1066. StringBuilder str = new StringBuilder();
  1067. str = GetSsqHm("dlthm.txt");
  1068. str = str.Replace("\n", " ");
  1069. string[] str1 = str.ToString().Split(',');
  1070. int numberCount = listnum.Length;
  1071. string[] str2 = str1[listnum.Length - 7].Replace("/n", "+").Split('+');
  1072. int mod6 = 0;
  1073. for (int i = 0; i < str2.Length; i++)
  1074. {
  1075. string[] str3 = str2[i].Replace(" ", "+").Split('+');
  1076. for (int j = 0; j < str3.Length; j++)
  1077. {
  1078. if (str3[j].Trim().Length > 0)
  1079. {
  1080. mod6 = mod6 + 1;
  1081. result += listnum[Convert.ToInt32(str3[j]) - 1];
  1082. if (mod6 % 5 == 0)
  1083. {
  1084. result = result.Substring(0, result.Length);
  1085. result += "+";
  1086. }
  1087. else
  1088. {
  1089. result += ",";
  1090. }
  1091. }
  1092. }
  1093. }
  1094. Numbers = result.Split(new char[] { '+' }, StringSplitOptions.RemoveEmptyEntries).ToList();
  1095. }
  1096. /// <summary>
  1097. /// 定位/不定位胆码运算
  1098. /// </summary>
  1099. /// <param name="id"></param>
  1100. /// <param name="numbers"></param>
  1101. /// <param name="filterType"></param>
  1102. /// <param name="isSave"></param>
  1103. /// <param name="isDingWei">是否定位</param>
  1104. [ToolFunctionAttr("胆码过滤和不定位胆码过滤-(3D,P3)", FilterType.Filter_DanMa)]
  1105. public static void SpecialFilter_DanMa(int id, ref List<string> numbers, FilterType filterType, bool isSave)
  1106. {
  1107. if (numbers.Count < 1)
  1108. { return; }
  1109. var childs = Caches.GetTrendToolChildList(new TrendToolInfo() { Id = id }).ToList();
  1110. //包含排除项
  1111. TrendToolInfo include = childs.Find(x => x.FilterCodeType == FilterCodeType.Include);
  1112. //内容项目
  1113. List<TrendToolInfo> contents = childs.FindAll(x => x.FilterCodeType == FilterCodeType.Content && x.ParentID != -1);
  1114. //bool isInclude = ToolCommFilter.GetIncludeData(include);
  1115. //定位胆码
  1116. if (contents.Count == 3)
  1117. {
  1118. string data0 = GetContentsData(contents[0], filterType);
  1119. string data1 = GetContentsData(contents[1], filterType);
  1120. string data2 = GetContentsData(contents[2], filterType);
  1121. if ((data0 + data1 + data2).Length < 1) { return; }
  1122. for (int num = 0; num < numbers.Count; num++)
  1123. {
  1124. string oneNumber = numbers[num].ToString();
  1125. string[] oneNumberArr = oneNumber.Split(',');
  1126. if ((!string.IsNullOrEmpty(data0) && data0.IndexOf(oneNumberArr[0]) != -1)
  1127. || (!string.IsNullOrEmpty(data1) && data1.IndexOf(oneNumberArr[1]) != -1)
  1128. || (!string.IsNullOrEmpty(data2) && data2.IndexOf(oneNumberArr[2]) != -1))
  1129. { }
  1130. else { numbers.RemoveAt(num); num--; }
  1131. }
  1132. }
  1133. else if (contents.Count == 1)//不定位胆码
  1134. {
  1135. string data0 = GetContentsData(contents[0], filterType);
  1136. if (string.IsNullOrWhiteSpace(data0)) { return; }
  1137. List<string> data = new List<string>(data0.Split(','));
  1138. for (int num = 0; num < numbers.Count; num++)
  1139. {
  1140. List<string> lnum = new List<string>(numbers[num].Split(','));
  1141. if (!data.Intersect(lnum).Any()) { numbers.RemoveAt(num); num--; }
  1142. }
  1143. }
  1144. }
  1145. #endregion
  1146. #region 私有方法
  1147. /// <summary>
  1148. /// 包含不包含过滤
  1149. /// </summary>
  1150. /// <param name="IsInclude"></param>
  1151. /// <param name="results"></param>
  1152. /// <param name="filterList"></param>
  1153. /// <returns></returns>
  1154. private static bool IncludeFilter(bool IsInclude, List<string> results, List<string> filterList)
  1155. {
  1156. bool isRemove = false;
  1157. //包含所需要的值
  1158. if (IsInclude == true)
  1159. {
  1160. if (!(filterList.Intersect(results).Count() > 0))
  1161. { isRemove = true; }
  1162. else
  1163. { isRemove = false; }
  1164. }//排除选中的值
  1165. else if (IsInclude == false)
  1166. {
  1167. if (filterList.Intersect(results).Count() > 0)
  1168. { isRemove = true; }
  1169. }
  1170. return isRemove;
  1171. }
  1172. private static string P5ZhuHe012Rule(int data, int lu, List<string> nums)
  1173. {
  1174. string xt = string.Empty;
  1175. if (data % 3 == lu)
  1176. {
  1177. //号码的012路形态
  1178. int mod;
  1179. List<int> arr = new List<int>();
  1180. for (int i = 0; i < nums.Count; i++)
  1181. {
  1182. mod = Convert.ToInt32(nums[i]) % 3;
  1183. arr.Add(mod);
  1184. }
  1185. arr.Sort();
  1186. try
  1187. { xt = arr[0].ToString() + arr[1].ToString() + arr[2].ToString() + arr[3].ToString() + arr[4].ToString(); }
  1188. catch
  1189. { }
  1190. }
  1191. return xt;
  1192. }
  1193. #endregion
  1194. }
  1195. }