using System;
using System.Collections.Generic;
using CP.Cache;
using CP.Common;
using CP.Model;
using System.Linq;
namespace CP.Business
{
///
/// 体彩大乐透逻辑操作类
///
public class Tcdlt
{
///
/// 缓存
///
static WMCache cache = WMCache.GetCacheService();
#region 最近n期形态=x的数据列表
///
/// 后区和值的最近n条
///
///
///
public static List GetTcdltListByHhz(ref List list, int hz)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (list[i].hhz == hz)
rlist.Add(list[i]);
}
}
return rlist;
}
///
/// 所有范围在shz和ehz之间的数据列表
///
///
///
///
public static List GetTcdltListByQHz(ref List list, int shz, int ehz)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (list[i].qhz >= shz && list[i].qhz <= ehz)
rlist.Add(list[i]);
}
}
return rlist;
}
///
/// 所后区号=
///
///
///
public static List GetTcdltListByHqhm(ref List list, int blue)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (list[i].n6 == blue || list[i].n7 == blue)
rlist.Add(list[i]);
}
}
return rlist;
}
///
/// 所有号码中包括red的数据
///
///
///
public static List GetTcdltListByQqhm(ref List list, int red)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
List kjh = new List() { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
if (kjh.Contains(red))
rlist.Add(list[i]);
}
}
return rlist;
}
#endregion
///
/// 根据短期数,查询大乐透历史同期号
///
/// 短期数
///
public static List GetHistoryTcdltList(ref List list, string shortqi)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (list[i].qi.ToString().Substring(4) == shortqi)
{
rlist.Add(list[i]);
}
}
}
return rlist;
}
///
/// 取出某个info的五分区的某个区间的个数
///
///
///
///
public static int GetDlt5fqQjCount(TcdltInfo info, int qj)
{
List kjh = new List { info.n1, info.n2, info.n3, info.n4, info.n5 };
int[] sqb = { 0, 0, 0, 0, 0 };
for (int j = 1; j < 8; j++)
{
if (kjh.Contains(j))
sqb[0]++;
}
for (int j = 8; j < 15; j++)
{
if (kjh.Contains(j))
sqb[1]++;
}
for (int j = 15; j < 22; j++)
{
if (kjh.Contains(j))
sqb[2]++;
}
for (int j = 22; j < 29; j++)
{
if (kjh.Contains(j))
sqb[3]++;
}
for (int j = 29; j < 36; j++)
{
if (kjh.Contains(j))
sqb[4]++;
}
if (qj == 1)
return sqb[0];
if (qj == 2)
return sqb[1];
if (qj == 3)
return sqb[2];
if (qj == 4)
return sqb[3];
if (qj == 5)
return sqb[4];
return 0;
}
///
/// 取出某个info的七分区的某个区间的个数
///
///
///
///
public static int GetDlt7fqQjCount(TcdltInfo info, int qj)
{
List kjh = new List { info.n1, info.n2, info.n3, info.n4, info.n5 };
int[] sqb = { 0, 0, 0, 0, 0, 0, 0 };
for (int j = 1; j < 6; j++)
{
if (kjh.Contains(j))
sqb[0]++;
}
for (int j = 6; j < 11; j++)
{
if (kjh.Contains(j))
sqb[1]++;
}
for (int j = 11; j < 16; j++)
{
if (kjh.Contains(j))
sqb[2]++;
}
for (int j = 16; j < 21; j++)
{
if (kjh.Contains(j))
sqb[3]++;
}
for (int j = 21; j < 26; j++)
{
if (kjh.Contains(j))
sqb[4]++;
}
for (int j = 26; j < 31; j++)
{
if (kjh.Contains(j))
sqb[5]++;
}
for (int j = 31; j < 36; j++)
{
if (kjh.Contains(j))
sqb[6]++;
}
if (qj == 1)
return sqb[0];
if (qj == 2)
return sqb[1];
if (qj == 3)
return sqb[2];
if (qj == 4)
return sqb[3];
if (qj == 5)
return sqb[4];
if (qj == 6)
return sqb[5];
if (qj == 7)
return sqb[6];
return 0;
}
#region 某个值/状态上一期的情况
///
/// 前区5分区某个区间上一次个数为count的数据
///
///
///
///
///
public static TcdltInfo GetLast5fqQjCountTcdltInfo(ref List list, int qj, int count, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
int[] sqb = { 0, 0, 0, 0, 0 };
List kjh = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
for (int j = 1; j < 8; j++)
{
if (kjh.Contains(j))
sqb[0]++;
}
for (int j = 8; j < 15; j++)
{
if (kjh.Contains(j))
sqb[1]++;
}
for (int j = 15; j < 22; j++)
{
if (kjh.Contains(j))
sqb[2]++;
}
for (int j = 22; j < 29; j++)
{
if (kjh.Contains(j))
sqb[3]++;
}
for (int j = 29; j < 36; j++)
{
if (kjh.Contains(j))
sqb[4]++;
}
if (qj == 1 && sqb[0] == count)
{
return list[i];
}
if (qj == 2 && sqb[1] == count)
{
return list[i];
}
if (qj == 3 && sqb[2] == count)
{
return list[i];
}
if (qj == 4 && sqb[3] == count)
{
return list[i];
}
if (qj == 5 && sqb[4] == count)
{
return list[i];
}
}
}
return info;
}
///
/// 前区7分区某个区间上一次个数为count的数据
///
///
///
///
///
public static TcdltInfo GetLast7fqQjCountTcdltInfo(ref List list, int qj, int count, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
int[] sqb = { 0, 0, 0, 0, 0, 0, 0 };
List kjh = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
for (int j = 1; j < 6; j++)
{
if (kjh.Contains(j))
sqb[0]++;
}
for (int j = 6; j < 11; j++)
{
if (kjh.Contains(j))
sqb[1]++;
}
for (int j = 11; j < 16; j++)
{
if (kjh.Contains(j))
sqb[2]++;
}
for (int j = 16; j < 21; j++)
{
if (kjh.Contains(j))
sqb[3]++;
}
for (int j = 21; j < 26; j++)
{
if (kjh.Contains(j))
sqb[4]++;
}
for (int j = 26; j < 31; j++)
{
if (kjh.Contains(j))
sqb[5]++;
}
for (int j = 31; j < 36; j++)
{
if (kjh.Contains(j))
sqb[6]++;
}
if (qj == 1 && sqb[0] == count)
{
return list[i];
}
if (qj == 2 && sqb[1] == count)
{
return list[i];
}
if (qj == 3 && sqb[2] == count)
{
return list[i];
}
if (qj == 4 && sqb[3] == count)
{
return list[i];
}
if (qj == 5 && sqb[4] == count)
{
return list[i];
}
if (qj == 6 && sqb[5] == count)
{
return list[i];
}
if (qj == 7 && sqb[6] == count)
{
return list[i];
}
}
}
return info;
}
///
/// 前区上一期和尾val的数据
///
///
///
///
public static TcdltInfo GetLastQhwTcdltInfo(ref List list, int val, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetHw(list[i].qhz) == val)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 后区上一期和尾val的数据
///
///
///
///
public static TcdltInfo GetLastHhwTcdltInfo(ref List list, int val, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetHw(list[i].hhz) == val)
{
info = list[i];
return info;
}
}
}
return info;
}
///
///前区上一次和值奇偶形态的数据
///
///
///
///
public static TcdltInfo GetLastQhzJoTcdltInfo(ref List list, int xt, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].qhz % 2 != 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].qhz % 2 == 0)
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 大乐透前区跨度奇偶 上一次
///
///
///
///
public static TcdltInfo GetLastQkdJoTcdltInfo(ref List list, int xt, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].qkd % 2 != 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].qkd % 2 == 0)
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 大乐透前区跨度大小 前一次情况
///
///
///
///
public static TcdltInfo GetLastQkdDxTcdltInfo(ref List list, int xt, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].qkd > 18)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].qkd < 19)
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 大乐透前区跨度质合 前一次情况
///
///
///
///
public static TcdltInfo GetLastQkdZhTcdltInfo(ref List list, int xt, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (ZstUtils.GetZh(list[i].qkd) == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetZh(list[i].qkd) == 1)
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
///后区上一次和值奇偶形态的数据
///
///
///
///
public static TcdltInfo GetLastHhzJoTcdltInfo(ref List list, int xt, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].hhz % 2 != 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].hhz % 2 == 0)
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 前区上一次和值val的数据
///
///
///
///
public static TcdltInfo GetLastQhzTcdltInfo(ref List list, int shz, int ehz, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].qhz >= shz && list[i].qhz <= ehz)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 后区上一次和值val的数据
///
///
///
///
public static TcdltInfo GetLastHhzTcdltInfo(ref List list, int val, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].hhz == val)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 后和值上一次的值
///
///
///
///
///
public static TcdltInfo GetLastHhzTcdltInfo(ref List list, int shz, int ehz, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].hhz >= shz && list[i].hhz <= ehz)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 前区上一次跨度val的数据
///
///
///
///
public static TcdltInfo GetLastQkdTcdltInfo(ref List list, int val, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].qkd == val)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 取出个排名的上一次数据
///
///
///
public static TcdltInfo GetLastTcdltInfo(ref List list, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].rank == rank - 1)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 取出个排名的下一次数据
///
///
///
public static TcdltInfo GetNextTcdltInfo(ref List list, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
for (int i = rank - 1; i < list.Count; i++)
{
if (list[i].rank == rank + 1)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一次AC值012路的情况
///
///
///
///
public static TcdltInfo GetLastAc012TcdltInfo(ref List list, int val, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].ac % 3 == val)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一期AC值的质合情况
///
///
///
///
public static TcdltInfo GetLastAcZhTcdltInfo(ref List list, int xt, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
List zh = new List { 4, 6, 8, 9, 10 };
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (!zh.Contains(list[i].ac))
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (zh.Contains(list[i].ac))
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 上一期AC值的大小情况
///
///
///
///
public static TcdltInfo GetLastAcDxTcdltInfo(ref List list, int xt, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].ac > 5)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].ac < 6)
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 上一期某个AC值大小的数据
///
///
///
///
public static TcdltInfo GetLastAcJoTcdltInfo(ref List list, int xt, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].ac % 2 != 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].ac % 2 == 0)
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 上一期某个AC值的数据
///
///
///
///
public static TcdltInfo GetLastAcTcdltInfo(ref List list, int val, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].ac == val)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一期某个后区号的冷热情况.
///
///
///
///
public static TcdltInfo GetLastHqHotTcdltInfo(ref List list, int xt, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
List hot = Tcdlt.GetTcdltHqHotList(ref list,list[i].rank, 16);
if (xt == 0)
{
if (!hot.Contains(list[i].n6) || !hot.Contains(list[i].n7))
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (hot.Contains(list[i].n6) || !hot.Contains(list[i].n7))
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 根据当前出号和排名,查询出上一次出此号时的数据
/// 主要用在遗漏上
///
///
///
///
public static TcdltInfo GetLastHqTcdltInfo(ref List list, int val, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].n6 == val || list[i].n7 == val)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 前区
/// 根据当前出号和排名,查询出上一次出此号时的数据
/// 主要用在遗漏上
///
///
///
///
public static TcdltInfo GetLastQqTcdltInfo(ref List list, int val, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
List kjh = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 };
if (kjh.Contains(val))
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 后区跨度上一期情况
///
///
///
///
public static TcdltInfo GetLastHqKdTcdltInfo(ref List list, int val, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (Math.Abs(list[i].n7 - list[i].n6) == val)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 后区大小形态上一期情况
///
///
///
///
public static TcdltInfo GetLastHqDxTcdltInfo(ref List list, string dx, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetDltHqDxxt(list[i].n6, list[i].n7).Equals(dx))
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 后区奇偶形态上一期情况
///
///
///
///
public static TcdltInfo GetLastHqJoTcdltInfo(ref List list, string jo, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetDltHqJoxt(list[i].n6, list[i].n7).Equals(jo))
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 后区冷热形态上一期情况
///
///
///
///
public static TcdltInfo GetLastHqLrTcdltInfo(ref List list, string lr, int rank)
{
TcdltInfo info = new TcdltInfo();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (Getlrxt(ref list, list[i]).Equals(lr))
{
info = list[i];
return info;
}
}
}
return info;
}
#region 后区冷热
///
/// 后区冷热形态
///
///
///
public static string Getlrxt(ref List list, TcdltInfo info)
{
List hot = Tcdlt.GetTcdltHqHotList(ref list,info.rank, 6);
string n6lr = "冷";
string n7lr = "冷";
if (hot.Contains(info.n6))
n6lr = "热";
if (hot.Contains(info.n7))
n7lr = "热";
return (n6lr + n7lr).ToString().Trim();
}
#endregion
#endregion
#region 冷热号
///
/// 某期大乐透前N期的数据
/// 用于计算大乐透前区冷热号
///
/// 当前期的排名
/// 前n期
///
public static List GetTcdltQqHotList(ref List list, int rank, int pagesize)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= (rank - pagesize - 1) && i >= 0; i--)
{
rlist.Add(list[i].n1);
rlist.Add(list[i].n2);
rlist.Add(list[i].n3);
rlist.Add(list[i].n4);
rlist.Add(list[i].n5);
}
}
return rlist;
}
///
/// 最近N期的前区热号...
///
///
///
public static List GetTcdltQhHotList(ref List list, int pagesize)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = size - 1; i >= (size - pagesize - 1) && i >= 0; i--)
{
rlist.Add(list[i].n1);
rlist.Add(list[i].n2);
rlist.Add(list[i].n3);
rlist.Add(list[i].n4);
rlist.Add(list[i].n5);
}
}
return rlist;
}
///
/// 某期大乐透前n期的数据
/// 用于计算大乐透后区冷热号
///
/// 当前期的排名
/// 前n期
///
public static List GetTcdltHqHotList(ref List list, int rank, int pagesize)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = rank - 2; i >= (rank - pagesize - 1) && i >= 0; i--)
{
rlist.Add(list[i].n6);
rlist.Add(list[i].n7);
}
}
return rlist;
}
///
/// 近n期的大乐透后区热号
///
///
///
public static List GetTcdltHqHotList(ref List list, int pagesize)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = size - 1; i >= (size - pagesize - 1) && i >= 0; i--)
{
rlist.Add(list[i].n6);
rlist.Add(list[i].n7);
}
}
return rlist;
}
#endregion
#region 获取数据
///
/// 取某一期的数据
/// 根据期数值
///
///
///
public static TcdltInfo GetTcdltInfo(ref List list, int qi)
{
TcdltInfo info = new TcdltInfo();
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (list[i].qi == qi)
{
info = list[i];
break;
}
}
return info;
}
///
/// 大乐透星期x的所有数据列表
///
///
///
public static List GetTcdltWeekList(ref List list, int week)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (list[i].week == week)
rlist.Add(list[i]);
}
}
return rlist;
}
///
/// 走势图上的最近xx期数据.
///
/// 最近n条
/// 按年份
/// 开始期
/// 结束期
/// 星期x
///
public static List GetTcdltList(ref List datalist, int pagesize, int year, int sqi, int eqi, int week = 0)
{
var list = new List();
///星期x的条件时
///数据来源不一样.
if (week > 0)
list = GetTcdltWeekList(ref datalist,week);
else
list = datalist;
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
if (pagesize > 0)
{
for (int i = (size - pagesize); i < size; i++)
{
rlist.Add(list[i]);
}
return rlist;
}
if (year > 0)
{
rlist.Clear();
for (int i = 0; i < size; i++)
{
if (TypeConverter.StrToInt(list[i].qi.ToString().Substring(0, 4), 0) == year)
rlist.Add(list[i]);
}
return rlist;
}
if (sqi > 0 && eqi > 0)
{
rlist.Clear();
int srank = GetTcdltInfo(ref list,sqi).rank;
int erank = GetTcdltInfo(ref list,eqi).rank;
if (erank != 0 && srank != 0 && erank > srank)
{
rlist.AddRange(list.Where(m => m.rank >= srank && m.rank <= erank));
//for (int i = srank - 1; i < erank && i < size; i++)
//{
// rlist.Add(list[i]);
//}
}
return rlist;
}
if (week > 0)
return list;
if (pagesize == 0 && year == 0 && eqi == 0 && sqi == 0 && week == 0)
return list;
}
return rlist;
}
///
/// 走势图上的最近xx期数据.
///
/// 最近n条
/// 开始期
/// 结束期
/// 按年份
/// 期号尾数
/// 星期x
/// 按月份
/// 同期
///
public static List GetTcdltList(ref List datalist, int pagesize, int sqi, int eqi, int year, int month, int qhws, int week, int tq)
{
//星期x的条件时
//数据来源不一样.
if (week > 0)
{
return GetTcdltWeekList(ref datalist, week);
}
var list = datalist;
List rlist = new List();
int size = list.Count;
if (pagesize > 0)
{
for (int i = (size - pagesize); i < size; i++)
{
rlist.Add(list[i]);
}
return rlist;
}
if (tq > 0)
{
rlist.Clear();
for (int i = 0; i < size; i++)
{
if (TypeConverter.StrToInt(list[i].qi.ToString().Substring(4), 0) ==
TypeConverter.StrToInt(tq.ToString().Substring(4), 0))
rlist.Add(list[i]);
}
return rlist;
}
if (year > 0)
{
rlist.Clear();
if (month > 0)
{
if (qhws < 10)
{
for (int i = 0; i < size; i++)
{
if (list[i].date.Year == year && list[i].date.Month == month &&
TypeConverter.StrToInt(list[i].qi.ToString().Substring(list[i].qi.ToString().Length-1), 0) == qhws)
rlist.Add(list[i]);
}
}
else
{
for (int i = 0; i < size; i++)
{
if (list[i].date.Year == year && list[i].date.Month == month)
rlist.Add(list[i]);
}
}
}
else if (qhws < 10)
{
for (int i = 0; i < size; i++)
{
if (list[i].date.Year == year &&
TypeConverter.StrToInt(list[i].qi.ToString().Substring(list[i].qi.ToString().Length - 1), 0) == qhws)
rlist.Add(list[i]);
}
}
else
{
for (int i = 0; i < size; i++)
{
if (list[i].date.Year == year)
rlist.Add(list[i]);
}
}
return rlist;
}
if (month > 0)
{
rlist.Clear();
if (qhws < 10)
{
for (int i = 0; i < size; i++)
{
if (list[i].date.Month == month &&
TypeConverter.StrToInt(list[i].qi.ToString().Substring(list[i].qi.ToString().Length - 1), 0) == qhws)
rlist.Add(list[i]);
}
}
else
{
for (int i = 0; i < size; i++)
{
if (list[i].date.Month == month)
rlist.Add(list[i]);
}
}
return rlist;
}
if (qhws < 10)
{
rlist.Clear();
for (int i = 0; i < size; i++)
{
if (TypeConverter.StrToInt(list[i].qi.ToString().Substring(list[i].qi.ToString().Length - 1), 0) == qhws)
rlist.Add(list[i]);
}
return rlist;
}
if (sqi > 0 && eqi > 0)
{
rlist.Clear();
int srank = GetTcdltInfo(ref list, sqi).rank;
int erank = GetTcdltInfo(ref list, eqi).rank;
if (erank != 0 && srank != 0 && erank > srank)
{
for (int i = srank - 1; i < erank && i < size; i++)
{
rlist.Add(list[i]);
}
}
return rlist;
}
return rlist;
}
///
/// 大乐透数据..
/// 遗漏表上用到的..
///
///
///
public static List GetMissTcdltList(ref List list, int eqi)
{
List rlist = new List();
if (eqi > 0)
{
int size = list.Count;
int erank = GetTcdltInfo(ref list,eqi).rank;
if (erank > 0)
{
for (int i = 0; i < erank && i < size; i++)
{
rlist.Add(list[i]);
}
}
else
{
for (int i = 0; i < size; i++)
{
rlist.Add(list[i]);
}
}
}
else
{
rlist = list;
}
return rlist;
}
///
/// 所有大乐透数据
///
///
public static List GetTcdltList()
{
string key = string.Format(CacheKeys.TCDLT_DATALIST);
List list = cache.GetObject>(key);
if (list == null)
{
list = TcdltData.GetTcdltList();
cache.AddObject(key, list, (int)CacheTime.Data);
}
return list;
}
#endregion
#region 开奖公告相关方法
///
/// 包括开机号的
///
///
///
public static List GetTcdltKjihList(int pagesize)
{
//GetTcdltKjihList
string key = string.Format(CacheKeys.TCDLT_KJH_DATA + "-{0}-kjih", pagesize);
List list = cache.GetObject>(key);
if (list == null)
{
list = TcdltData.GetTcdltKjihList(pagesize);
cache.AddObject(key, list, (int)CacheTime.Kjh);
}
return list;
}
///
/// 大乐透最近30期开奖数据,完整开奖信息,有缓存
///
///
public static List GetTcdltListTop30(int pagesize=30)
{
string key = string.Format(CacheKeys.TCDLT_KJH_DATA+"-{0}",pagesize);
List list = cache.GetObject>(key);
if (list == null)
{
list = TcdltData.GetTcdltTop30(pagesize);
cache.AddObject(key, list, (int)CacheTime.Kjh);
}
return list;
}
///
/// 获取最新一期开奖信息,完整开奖信息,有缓存
///
///
public static TcdltLongInfo GetTcdltInfoTop1(ref List list)
{
TcdltLongInfo info = new TcdltLongInfo();
//List list = GetTcdltListTop30();
if (list.Count > 0)
{
info = list[0];
}
return info;
}
///
/// 根据期数返回某期完整开奖信息,无缓存
///
///
///
public static TcdltLongInfo GetTcdltInfoByqi(int qi)
{
return TcdltData.GetTcdltInfoByQi(qi);
}
///
/// 返回某年对应的期数列表,有缓存
///
///
///
public static List GetTcdltQiListByYear(int year)
{
string key = string.Format(CacheKeys.TCDLT_KJH_DATA + "/qilistbyyear/{0}", year);
List list = cache.GetObject>(key);
if (list == null)
{
list = TcdltData.GetTcdltQiListByYear(year);
cache.AddObject(key, list, (int)CacheTime.System);
}
return list;
}
#endregion
//end
}
}