using System;
using System.Collections.Generic;
using System.Linq;
using CP.Cache;
using CP.Common;
using CP.Model;
namespace CP.Business
{
///
/// 体彩p3的逻辑操作类
/// 包括cache等
///
public class Tcp3
{
///
/// 缓存
///
static WMCache cache = WMCache.GetCacheService();
#region 最近n期形态=x的列表
///
/// 最近n期和值=x的列表
///
/// xt
///
public static List GetTcp3ListBy012(ref List list, string xt)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (ToolUtils.Get012Xt(list[i].kjh.ToString("000")).Equals(xt))
{
rlist.Add(list[i]);
}
}
}
return rlist;
}
///
/// 最近n期和值=x的列表
///
/// xt
///
public static List GetTcp3ListByZh(ref List list, string xt)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (ToolUtils.GetZh(list[i].kjh.ToString("000")).Equals(xt))
{
rlist.Add(list[i]);
}
}
}
return rlist;
}
///
/// 最近n期和值=x的列表
///
/// xt
///
public static List GetTcp3ListByDx(ref List list, string xt)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (ToolUtils.GetDx(list[i].kjh.ToString("000")).Equals(xt))
{
rlist.Add(list[i]);
}
}
}
return rlist;
}
///
/// 最近n期和值=x的列表
///
/// xt
///
public static List GetTcp3ListByJo(ref List list, string xt)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (ToolUtils.GetJo(list[i].kjh.ToString("000")).Equals(xt))
{
rlist.Add(list[i]);
}
}
}
return rlist;
}
///
/// 最近n期定位号码的列表
///
///
///
public static List GetTcp3ListByDwNum(ref List list, int num, int site)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (list[i].n1 == num && site == 1)
{
rlist.Add(list[i]);
}
if (list[i].n2 == num && site == 2)
{
rlist.Add(list[i]);
}
if (list[i].n3 == num && site == 3)
{
rlist.Add(list[i]);
}
}
}
return rlist;
}
///
/// 最近n期和值=x的列表
///
/// 号码
///
public static List GetTcp3ListByNum(ref List list, int num)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (ToolUtils.GetNumList(list[i].kjh.ToString("000")).Contains(num))
{
rlist.Add(list[i]);
}
}
}
return rlist;
}
///
/// 最近n期和值=x的列表
///
/// 和值
///
public static List GetTcp3ListByHw(ref List list, int hw)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (list[i].hw == hw)
{
rlist.Add(list[i]);
}
}
}
return rlist;
}
///
/// 最近n期和值=x的列表
///
/// 和值
///
public static List GetTcp3ListByHz(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].hz == hz)
{
rlist.Add(list[i]);
}
}
}
return rlist;
}
///
/// 最近n期跨度=x的列表
///
/// 跨度值
///
public static List GetTcp3ListByKd(ref List list, int kd)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (list[i].kd == kd)
{
rlist.Add(list[i]);
}
}
}
return rlist;
}
#endregion
#region 跟随号码列表
///
/// 返回某个号码的所有跟随号码数据
///
///
///
public static List GetGsList(ref List list, string num)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
List nums = ToolUtils.GetZxNumList(num);
//load 被查询开奖号的下一期开奖号..
if (nums.Contains(list[i].kjh.ToString("000")) && (i + 1) < size)
{
rlist.Add(list[i + 1]);
}
}
}
return rlist;
}
#endregion
#region 可能只有开机号/试机号的3D数据
///
/// 可能只有开机号/试机号的3D数据
///
///
public static List GetTcp3AllList(ref List datalist)
{
string key = string.Format(CacheKeys.TCP3_DATALIST_ALL);
List list = cache.GetObject>(key);
if (list == null)
{
list = Tcp3Data.GetTcp3AllList();
cache.AddObject(key, list, (int)CacheTime.Data);
}
return list;
}
///
/// 最近n条3D所有数据
/// 包括试机号
///
///
///
public static List GetTcp3AllList(ref List list, int pagesize)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = (size - pagesize); i < size; i++)
{
if (list[i].sjh != -1)
rlist.Add(list[i]);
}
}
return rlist;
}
///
/// p3试机号走势图专用的数据源
/// 包括了最新试机号的数据
///
/// 最近n条
/// 年份
/// 开始期
/// 结束期
///
public static List GetTcp3AllList(ref List list, int pagesize, int year, int sqi, int eqi)
{
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 = GetTcp3Info(ref list,sqi).rank;
int erank = GetTcp3Info(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 GetSameZxSjhAllList(ref List list, string sjh, out List lastList)
{
List rlist = new List();
lastList = new List();
if (TypeConverter.StrToInt(sjh, -1) == -1)
return rlist;
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = 0; i < size; i++)
{
List sn = ToolUtils.GetNumList(sjh);
sn.Sort();
List sjhs = ToolUtils.GetNumList(list[i].sjh.ToString("000"));
sjhs.Sort();
if (sn[0] == sjhs[0] && sn[1] == sjhs[1] && sn[2] == sjhs[2])
{
rlist.Add(list[i]);
//返回本期号码的上一期数据..
if (i > 0)
lastList.Add(list[i - 1]);
}
}
}
return rlist;
}
///
/// 与某个试机号相同的列表,最近10条
///
///
///
///
public static List GetSameSjhAllList(ref List list, int sjh)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
List temp = new List();
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (list[i].sjh == sjh)
temp.Add(list[i]);
}
size = temp.Count;
int start = 0;
if (size > 10)
start = size - 10;
for (int i = start; i < size; i++)
{
rlist.Add(temp[i]);
}
}
return rlist;
}
///
/// 3D号码历史上的今天.
///
/// 期数
///
public static List GetHistoryTodayTcp3List(ref List list, string qi)
{
DateTime now = System.DateTime.Now;
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).Equals(qi) && list[i].sjh != -1)
rlist.Add(list[i]);
}
}
return rlist;
}
///
/// 上一期的开奖信息.
///
///
public static Tcp3Info GetLastTcp3Info(ref List list)
{
Tcp3Info info = new Tcp3Info();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = (size - 1); i >= 0; i--)
{
if (list[i].n1 != -1)
return list[i];
}
}
return info;
}
///
/// 获取当前期的数据
///
///
///
public static Tcp3Info GetTodayQiTcp3Info(ref List list, int qi)
{
Tcp3Info info = new Tcp3Info();
if (list != null && list.Count > 0)
{
for (int i = 0; i < list.Count; i++)
{
if (list[i].qi == qi)
return list[i];
}
}
return info;
}
///
/// 取出当前期的3D数据
/// 可能只有开机号或试机号
///
///
public static Tcp3Info GetCurrentTcp3Info(ref List list)
{
Tcp3Info info = new Tcp3Info();
if (list != null && list.Count > 0)
return list[list.Count - 1];
return info;
}
#endregion
#region 包括完整开奖号的3D数据
///
/// cache中的所有数据.
///
///
public static List GetTcp3List()
{
string key = string.Format(CacheKeys.TCP3_DATALIST);
List list = new List();
if (cache.IsExist(key))
{
list = cache.GetObject>(key);
}
else
{
list = Tcp3Data.GetTcp3List();
cache.AddObject(key, list, (int)CacheTime.Data);
}
return list;
}
///
/// 3D遗漏表上用到的3D列表数据..
///
///
///
public static List GetMissTcp3List(ref List list, int eqi)
{
List rlist = new List();
if (eqi > 0)
{
int size = list.Count;
int erank = GetTcp3Info(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;
}
///
/// 福彩3D最近n期的未出号数据..
/// pagesize=0时为所有的
///
///
///
public static List GetWchTcp3List(ref List list, int pagesize)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
List nlist = Utils.GetAllNumber();
int begin = 0;
if (pagesize > 0)
begin = size - pagesize;
else
begin = 0;
if (pagesize >= size)
begin = 0;
for (int i = begin; i < size; i++)
{
if (nlist.Contains(list[i].kjh))
nlist.Remove(list[i].kjh);
}
rlist = nlist;
}
return rlist;
}
///
/// 按形态取3D数据列表
/// 组三/组六
///
///
///
public static List GetTcp3List(ref List list, int xt)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
int j = 0;
for (int i = 0; i < size; i++)
{
if (list[i].zxxt == xt)
{
list[i].z3rank = j;
rlist.Add(list[i]);
j++;
}
}
}
return rlist;
}
///
/// 取形如:
/// 最近120期~最近90期这种区间的数据列表
///
/// 较大的size
/// 较小的size
///
public static List GetTcp3List(ref List list, int maxsize, int minisize)
{
List rlist = new List();
if (list != null && list.Count > 0)
{
int size = list.Count;
for (int i = (size - maxsize); i < (size - minisize); i++)
{
rlist.Add(list[i]);
}
}
return rlist;
}
///
/// 福彩3D最近n期的开奖号int list
///
///
///
///
///
///
public static List GetTcp3KjhList(ref List datalist, int pagesize, int year, int sqi, int eqi)
{
List list = GetTcp3List(ref datalist,pagesize, year, sqi, eqi);
List kjhs = new List();
for (int i = 0; i < list.Count; i++)
{
kjhs.Add(list[i].kjh);
}
return kjhs;
}
///
/// 所有的开奖号数据int list
///
///
public static List GetTcp3KjhList(ref List list)
{
List kjhs = new List();
for (int i = 0; i < list.Count; i++)
{
kjhs.Add(list[i].kjh);
}
return kjhs;
}
///
/// 最近n期数据
///
/// 最近n期
/// 某一年
/// 开始期数
/// 结束期数
/// 周几
/// 形态0为豹子 3为组三 6为组六
/// 单双期数
///
public static List GetTcp3List(ref List datalist, int pagesize, int year, int sqi, int eqi, int week = 0, int xt = -1, int ds = 0)
{
List list = new List();
if (xt != -1)
list = GetTcp3List(ref datalist,xt);
else
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 (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 (week > 0)
{
rlist.Clear();
List temp = new List();
for (int i = 0; i < size; i++)
{
if (list[i].week == week)
temp.Add(list[i]);
}
for (int i = (temp.Count - 60); i < temp.Count; i++)
{
rlist.Add(temp[i]);
}
return rlist;
}
//单双期数
if (ds > 0)
{
rlist.Clear();
List temp = new List();
for (int i = 0; i < size; i++)
{
if (ds == 1)
{
if (list[i].qi % 2 != 0)
temp.Add(list[i]);
}
else if (ds == 2)
{
if (list[i].qi % 2 == 0)
temp.Add(list[i]);
}
}
for (int i = (temp.Count - 60); i < temp.Count; i++)
{
rlist.Add(temp[i]);
}
return rlist;
}
if (sqi > 0 && eqi > 0)
{
rlist.Clear();
int srank = GetTcp3Info(ref datalist,sqi).rank;
int erank = GetTcp3Info(ref datalist,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;
}
///无参数条件时,返回2002001到现在的所有数据..
if (pagesize == 0 && year == 0 && sqi == 0 && eqi == 0 && week == 0)
return list;
return rlist;
}
///
/// 取出开奖数据中最后一期的开奖数据
///
///
public static Tcp3Info GetEndTcp3Info(ref List list)
{
Tcp3Info info = new Tcp3Info();
if (list != null && list.Count > 0)
return list[list.Count - 1];
return info;
}
///
/// 根据期数获取期一期的数据...
///
///
///
public static Tcp3Info GetTcp3Info(ref List list, int qi)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = 0; i < size; i++)
{
if (list[i].qi == qi)
{
info = list[i];
break;
}
}
return info;
}
#endregion
#region 根据当前数据和排名,查询出上一次的数据
#region 组选形态的上一次情况
///
/// 某个号码组选 012形态的上一次数据.
///
///
///
public static Tcp3Info GetLast012Info(ref List list, string xt)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = (size - 1); i >= 0; i--)
{
string zh = ToolUtils.Get012Xt(list[i].kjh.ToString("000"));
List xts = ToolUtils.Get012List(xt);
if (xts.Contains(zh))
{
return list[i];
}
}
return info;
}
///
/// 某个号码组选 质合形态的上一次数据.
///
///
///
public static Tcp3Info GetLastZhInfo(ref List list, string xt)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = (size - 1); i >= 0; i--)
{
string zh = ToolUtils.GetZh(list[i].kjh.ToString("000"));
List xts = ToolUtils.GetZhList(xt);
if (xts.Contains(zh))
{
return list[i];
}
}
return info;
}
///
/// 某个号码组选 奇偶形态的上一次数据.
///
///
///
public static Tcp3Info GetLastJoInfo(ref List list, string xt)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = (size - 1); i >= 0; i--)
{
string jo = ToolUtils.GetJo(list[i].kjh.ToString("000"));
List xts = ToolUtils.GetJoList(xt);
if (xts.Contains(jo))
{
return list[i];
}
}
return info;
}
///
/// 某个号码组选 大小形态的上一次数据.
///
///
///
public static Tcp3Info GetLastDxInfo(ref List list, string xt)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = (size - 1); i >= 0; i--)
{
string dx = ToolUtils.GetDx(list[i].kjh.ToString("000"));
List xts = ToolUtils.GetDxList(xt);
if (xts.Contains(dx))
{
return list[i];
}
}
return info;
}
///
/// 某个号码组选形态的上一次数据
///
///
///
public static Tcp3Info GetLastZxNumInfo(ref List list, string num)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = (size - 1); i >= 0; i--)
{
List nums = ToolUtils.GetZxNumList(num);
if (nums.Contains(list[i].kjh.ToString("000")))
{
return list[i];
}
}
return info;
}
#endregion
#region 某个二码组合的上一次数据
///
/// 某个二码组合的上一次数据
///
///
///
public static Tcp3Info GetLastZx2MaInfo(ref List list, string num)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = (size - 1); i >= 0; i--)
{
List nums = ToolUtils.GetNumList(num);
if (list[i].kjh.ToString("000").Contains(num))
{
return list[i];
}
}
return info;
}
#endregion
#region 和尾振幅的上一次数据
///
/// 和尾振幅的上一次数据
///
///
///
///
public static Tcp3Info GetLastHwZfInfo(ref List list, int zf, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (i > 0)
{
if (Math.Abs(list[i].hw - list[i - 1].hw) == zf)
{
info = list[i];
return info;
}
}
}
return info;
}
#endregion
#region 总跨度振幅的上一次数据
///
/// 总跨度振幅的上一次数据
///
///
///
///
public static Tcp3Info GetLastKdZfInfo(ref List list, int zf, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (i > 0)
{
if (Math.Abs(list[i].kd - list[i - 1].kd) == zf)
{
info = list[i];
return info;
}
}
}
return info;
}
#endregion
#region 012路组选除0/1/2个数的上一次数据
///
/// 012路余0/1/2个数比值的上一次数据
///
///
///
///
public static Tcp3Info GetLastYnBzInfo(ref List list, string bz, int rank)
{
Tcp3Info info = new Tcp3Info();
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 };
string val = ZstUtils.Get012Count(0, kjh).ToString() + ":" + ZstUtils.Get012Count(1, kjh).ToString() + ":" + ZstUtils.Get012Count(2, kjh);
if (val.Equals(bz))
{
info = list[i];
return info;
}
}
return info;
}
///
/// 012路余0/1/2个数的上一次数据
///
///
///
///
///
public static Tcp3Info GetLastYnInfo(ref List list, int n, int j, int rank)
{
Tcp3Info info = new Tcp3Info();
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 };
if (ZstUtils.Get012Count(n, kjh) == j)
{
info = list[i];
return info;
}
}
return info;
}
#endregion
#region 质合形态的上一次数据
///
/// 开奖号某位上的上一次质合数据..
///
///
///
///
///
public static Tcp3Info GetLastNzhInfo(ref List list, int zh, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (site == 0)
{
if (ZstUtils.GetZh(list[i].n1) == zh)
{
info = list[i];
return info;
}
}
if (site == 1)
{
if (ZstUtils.GetZh(list[i].n2) == zh)
{
info = list[i];
return info;
}
}
if (site == 2)
{
if (ZstUtils.GetZh(list[i].n3) == zh)
{
info = list[i];
return info;
}
}
if (site == 4)
{
if (ZstUtils.GetZh(list[i].n4) == zh)
{
info = list[i];
return info;
}
}
if (site == 5)
{
if (ZstUtils.GetZh(list[i].n5) == zh)
{
info = list[i];
return info;
}
}
if (site == 6)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
if (ZstUtils.GetZh(n) == zh)
{
info = list[i];
return info;
}
}
if (site == 7)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Min();
if (ZstUtils.GetZh(n) == zh)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 奇偶比的上一次数据
///
///
///
///
public static Tcp3Info GetLastZhbInfo(ref List list, string bz, int rank)
{
Tcp3Info info = new Tcp3Info();
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 };
if (ZstUtils.GetZhb(kjh).Equals(bz))
{
info = list[i];
return info;
}
}
return info;
}
///
/// 质合形态的上一次数据
///
///
///
public static Tcp3Info GetLastZhxtInfo(ref List list, string xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetZhxt(list[i].kjh, false).Equals(xt))
{
info = list[i];
return info;
}
}
return info;
}
#endregion
#region 奇偶形态的上一次数据
///
/// 开奖号某位上的上一次奇偶数据..
///
///
///
///
///
public static Tcp3Info GetLastNjoInfo(ref List list, int jo, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (site == 0)
{
if (ZstUtils.GetJo(list[i].n1) == jo)
{
info = list[i];
return info;
}
}
if (site == 1)
{
if (ZstUtils.GetJo(list[i].n2) == jo)
{
info = list[i];
return info;
}
}
if (site == 2)
{
if (ZstUtils.GetJo(list[i].n3) == jo)
{
info = list[i];
return info;
}
}
if (site == 4)
{
if (ZstUtils.GetJo(list[i].n4) == jo)
{
info = list[i];
return info;
}
}
if (site == 5)
{
if (ZstUtils.GetJo(list[i].n5) == jo)
{
info = list[i];
return info;
}
}
if (site == 6)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
if (ZstUtils.GetJo(n) == jo)
{
info = list[i];
return info;
}
}
if (site == 7)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Min();
if (ZstUtils.GetJo(n) == jo)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 奇偶比的上一次数据
///
///
///
///
public static Tcp3Info GetLastJobInfo(ref List list, string bz, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetJob(list[i].kjh).Equals(bz))
{
info = list[i];
return info;
}
}
return info;
}
///
/// 奇偶形态的上一次数据
///
///
///
public static Tcp3Info GetLastJoxtInfo(ref List list, string xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetJoxt(list[i].kjh, false).Equals(xt))
{
info = list[i];
return info;
}
}
return info;
}
#endregion
#region 大小形态的上一次数据
///
/// 某个开奖号的上一次大小数据..
///
///
///
///
///
public static Tcp3Info GetLastNdxInfo(ref List list, int dx, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (site == 0)
{
if (ZstUtils.GetDx(list[i].n1) == dx)
{
info = list[i];
return info;
}
}
if (site == 1)
{
if (ZstUtils.GetDx(list[i].n2) == dx)
{
info = list[i];
return info;
}
}
if (site == 2)
{
if (ZstUtils.GetDx(list[i].n3) == dx)
{
info = list[i];
return info;
}
}
if (site == 4)
{
if (ZstUtils.GetDx(list[i].n4) == dx)
{
info = list[i];
return info;
}
}
if (site == 5)
{
if (ZstUtils.GetDx(list[i].n5) == dx)
{
info = list[i];
return info;
}
}
if (site == 6)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
if (ZstUtils.GetDx(n) == dx)
{
info = list[i];
return info;
}
}
if (site == 7)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Min();
if (ZstUtils.GetDx(n) == dx)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 大小比的上一次数据
///
///
///
///
public static Tcp3Info GetLastDxbInfo(ref List list, string bz, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetDxb(list[i].kjh).Equals(bz))
{
info = list[i];
return info;
}
}
return info;
}
///
/// 大小形态的上一次数据
///
///
///
public static Tcp3Info GetLastDxxtInfo(ref List list, string xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetDxxt(list[i].kjh, false).Equals(xt))
{
info = list[i];
return info;
}
}
return info;
}
#endregion
#region 组三走势图相关的上一次数据
///
/// 一上次组三的数据.
///
///
///
public static Tcp3Info GetLastZ3Info(ref List list, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].zxxt == 3)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 组三形态的上一次数据
/// AAB
///
///
///
///
public static Tcp3Info GetLastZ3XtInfo(ref List datalist, string xt, int rank)
{
Tcp3Info info = new Tcp3Info();
List list = GetTcp3List(ref datalist,3);
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetZ3Xt(list[i].kjh).Equals(xt))
{
info = list[i];
return info;
}
}
return info;
}
///
/// 组三号码N的奇偶上一次数据
///
///
///
///
public static Tcp3Info GetLastZ3NJoTcp3Info(ref List datalist, int jo, int rank)
{
Tcp3Info info = new Tcp3Info();
List list = GetTcp3List(ref datalist,3);
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetJo(ZstUtils.GetZ3Num(list[i].kjh)) == jo)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 组三号码N的大小上一次数据
///
///
///
///
public static Tcp3Info GetLastZ3NDxTcp3Info(ref List datalist, int dx, int rank)
{
Tcp3Info info = new Tcp3Info();
List list = GetTcp3List(ref datalist,3);
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetDx(ZstUtils.GetZ3Num(list[i].kjh)) == dx)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 组三号码N的质合上一次数据
///
///
///
///
public static Tcp3Info GetLastZ3NZhTcp3Info(ref List datalist, int zh, int rank)
{
Tcp3Info info = new Tcp3Info();
List list = GetTcp3List(ref datalist,3);
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetZh(ZstUtils.GetZ3Num(list[i].kjh)) == zh)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 组三号码N的012上一次数据
///
///
///
///
public static Tcp3Info GetLastZ3N012Tcp3Info(ref List datalist, int val, int rank)
{
Tcp3Info info = new Tcp3Info();
List list = GetTcp3List(ref datalist,3);
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.Get012(ZstUtils.GetZ3Num(list[i].kjh)) == val)
{
info = list[i];
return info;
}
}
return info;
}
#endregion
#region 012路相关的上一次形态
///
/// 返回某个开奖号码,012形态对应的上一次数据..
///
///
///
///
public static Tcp3Info GetLastXt012Tcp3Info(ref List list, string xt, int rank)
{
Tcp3Info info = new Tcp3Info();
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 };
if (ZstUtils.Get012Xt(kjh).Equals(xt))
{
info = list[i];
return info;
}
}
return info;
}
///
/// 百十个位号码012路形态的上一次情况
///
/// 形态
/// 排名
/// 位置
///
public static Tcp3Info GetLastNum012Tcp3Info(ref List list, int xt, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (site == 0)
{
if (ZstUtils.Get012(list[i].n1) == xt)
{
info = list[i];
return info;
}
}
if (site == 1)
{
if (ZstUtils.Get012(list[i].n2) == xt)
{
info = list[i];
return info;
}
}
if (site == 2)
{
if (ZstUtils.Get012(list[i].n3) == xt)
{
info = list[i];
return info;
}
}
if (site == 4)
{
if (ZstUtils.Get012(list[i].n4) == xt)
{
info = list[i];
return info;
}
}
if (site == 5)
{
if (ZstUtils.Get012(list[i].n5) == xt)
{
info = list[i];
return info;
}
}
if (site == 6)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
if (ZstUtils.Get012(n) == xt)
{
info = list[i];
return info;
}
}
if (site == 7)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Min();
if (ZstUtils.Get012(n) == xt)
{
info = list[i];
return info;
}
}
}
return info;
}
#endregion
#region 试机号与开奖号同号/同位的上一次数据
///
/// 组选同号
///
/// 当前排名
/// 值
///
public static Tcp3Info GetLastThTcp3Info(ref List list, int rank, int val)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
List th = ZstUtils.GetZxtw(list[i].sjh, list[i].kjh);
if (ZstUtils.GetZxth(list[i].sjh, list[i].kjh) == val)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 试机号与开奖号直选同位的上一次数据
///
/// 当前排名
/// 位置
///
public static Tcp3Info GetLastTwTcp3Info(ref List list, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
List th = ZstUtils.GetZxtw(list[i].sjh, list[i].kjh);
if (site == 0 && th[0])
{
info = list[i];
return info;
}
if (site == 1 && th[1])
{
info = list[i];
return info;
}
if (site == 2 && th[2])
{
info = list[i];
return info;
}
}
return info;
}
#endregion
#region 升降序/号码区段的上一次数据/连号
///
/// 连号的上一次数据
///
///
///
///
public static Tcp3Info GetLastLhTcp3Info(ref List list, string lh, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetLh(list[i].kjh).Equals(lh))
{
info = list[i];
return info;
}
}
return info;
}
///
/// 号码区段的上一次数据
///
///
///
///
public static Tcp3Info GetLastQdTcp3Info(ref List list, string qd, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetQd(list[i].kjh).Equals(qd))
{
info = list[i];
return info;
}
}
return info;
}
///
/// 升降序的上一次数据
///
///
///
///
public static Tcp3Info GetLastSjxTcp3Info(ref List list, string sjx, int rank)
{
Tcp3Info info = new Tcp3Info();
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 };
if (ZstUtils.GetSjxzh(kjh).Equals(sjx))
{
info = list[i];
return info;
}
}
return info;
}
#endregion
#region 跨度的上一次情况 <未定位>
///
/// 最大跨度的一上次数据
///
///
///
///
public static Tcp3Info GetLastKdTcp3Info(ref List list, int kd, int rank, int type = 0)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (type == 0)
{
if (list[i].kd == kd)
{
info = list[i];
return info;
}
}
else if (type == 1)
{
int kd1 = Math.Abs(list[i].n1 - list[i].n2);
if (kd1 == kd)
{
info = list[i];
return info;
}
}
else if (type == 2)
{
int kd2 = Math.Abs(list[i].n2 - list[i].n3);
if (kd2 == kd)
{
info = list[i];
return info;
}
}
else if (type == 3)
{
int kd3 = Math.Abs(list[i].n1 - list[i].n3);
if (kd3 == kd)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 跨度012路形态的上一次情况
///
/// 形态 0 1 2 路
/// 当前排名
/// 0=总跨 1=1跨 2=2跨
///
public static Tcp3Info GetLastKd012Tcp3Info(ref List list, int xt, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
int kjh = list[i].kjh;
//最大跨度
if (site == 0)
{
if (xt == 0)
{
if (list[i].kd % 3 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].kd % 3 == 1)
{
info = list[i];
return info;
}
}
if (xt == 2)
{
if (list[i].kd % 3 == 2)
{
info = list[i];
return info;
}
}
}
//一跨
if (site == 0)
{
if (xt == 0)
{
if (ZstUtils.GetKdList(kjh)[1] % 3 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetKdList(kjh)[1] % 3 == 1)
{
info = list[i];
return info;
}
}
if (xt == 2)
{
if (ZstUtils.GetKdList(kjh)[1] % 3 == 2)
{
info = list[i];
return info;
}
}
}
//二跨
if (site == 2)
{
if (xt == 0)
{
if (ZstUtils.GetKdList(kjh)[2] % 3 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetKdList(kjh)[2] % 3 == 1)
{
info = list[i];
return info;
}
}
if (xt == 2)
{
if (ZstUtils.GetKdList(kjh)[2] % 3 == 2)
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 跨度质合形态的上一次情况
///
/// 0为合 1为质
///
/// 0最大跨度 1为一跨 2为二跨
///
public static Tcp3Info GetLastKdZhTcp3Info(ref List list, int xt, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
List z = new List { 1, 2, 3, 5, 7 };
List h = new List { 0, 4, 6, 8, 9 };
for (int i = rank - 2; i >= 0; i--)
{
int kjh = list[i].kjh;
//最大跨度
if (site == 0)
{
if (xt == 0)
{
if (h.Contains(ZstUtils.GetKdList(kjh)[0]))
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (z.Contains(ZstUtils.GetKdList(kjh)[0]))
{
info = list[i];
return info;
}
}
}
//一跨
if (site == 0)
{
if (xt == 0)
{
if (h.Contains(ZstUtils.GetKdList(kjh)[1]))
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (z.Contains(ZstUtils.GetKdList(kjh)[1]))
{
info = list[i];
return info;
}
}
}
//二跨
if (site == 2)
{
if (xt == 0)
{
if (h.Contains(ZstUtils.GetKdList(kjh)[2]))
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (z.Contains(ZstUtils.GetKdList(kjh)[2]))
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 跨度大小形态的上一次情况
///
/// 0为小 1为大
///
/// 0最大跨度 1为一跨 2为二跨
///
public static Tcp3Info GetLastKdDxTcp3Info(ref List list, int xt, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
int kjh = list[i].kjh;
//最大跨度
if (site == 0)
{
if (xt == 0)
{
if (ZstUtils.GetKdList(kjh)[0] < 5)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetKdList(kjh)[0] > 4)
{
info = list[i];
return info;
}
}
}
//一跨
if (site == 0)
{
if (xt == 0)
{
if (ZstUtils.GetKdList(kjh)[1] < 5)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetKdList(kjh)[1] > 4)
{
info = list[i];
return info;
}
}
}
//二跨
if (site == 2)
{
if (xt == 0)
{
if (ZstUtils.GetKdList(kjh)[2] < 5)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetKdList(kjh)[2] > 4)
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 跨度奇偶形态的上一次情况
/// xt=0偶
/// xt=1奇
///
///
///
/// 0最大跨度 1为一跨 2为二跨
///
public static Tcp3Info GetLastKdJoTcp3Info(ref List list, int xt, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
int kjh = list[i].kjh;
//最大跨度
if (site == 0)
{
if (xt == 0)
{
if (ZstUtils.GetKdList(kjh)[0] % 2 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetKdList(kjh)[0] % 2 != 0)
{
info = list[i];
return info;
}
}
}
//一跨
if (site == 0)
{
if (xt == 0)
{
if (ZstUtils.GetKdList(kjh)[1] % 2 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetKdList(kjh)[1] % 2 != 0)
{
info = list[i];
return info;
}
}
}
//二跨
if (site == 2)
{
if (xt == 0)
{
if (ZstUtils.GetKdList(kjh)[2] % 2 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetKdList(kjh)[2] % 2 != 0)
{
info = list[i];
return info;
}
}
}
}
return info;
}
#endregion
#region 定位跨度的上一次情况 <百十位[0,1,2]>
///
/// 定位跨度的一上次数据<百十位[0,1,2]>
///
///
///
/// 0=百十,1=十个,2=百个
///
public static Tcp3Info GetLastZxKdTcp3Info(ref List list, int kd, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
int kjh = list[i].kjh;
//百十
if (site == 0)
{
if (ZstUtils.GetBSGKdList(kjh)[0] == kd)
{
info = list[i];
return info;
}
}
//十个
if (site == 1)
{
if (ZstUtils.GetBSGKdList(kjh)[1] == kd)
{
info = list[i];
return info;
}
}
//百个
if (site == 2)
{
if (ZstUtils.GetBSGKdList(kjh)[2] == kd)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 定位跨度012路形态的上一次情况
///
/// 形态 0 1 2 路
/// 当前排名
/// 0=百十 1=十个 2=百个
///
public static Tcp3Info GetLastZxKd012Tcp3Info(ref List list, int xt, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
int kjh = list[i].kjh;
//百十
if (site == 0)
{
if (xt == 0)
{
if (ZstUtils.GetBSGKdList(kjh)[0] % 3 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetBSGKdList(kjh)[0] % 3 == 1)
{
info = list[i];
return info;
}
}
if (xt == 2)
{
if (ZstUtils.GetBSGKdList(kjh)[0] % 3 == 2)
{
info = list[i];
return info;
}
}
}
//十个
if (site == 1)
{
if (xt == 0)
{
if (ZstUtils.GetBSGKdList(kjh)[1] % 3 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetBSGKdList(kjh)[1] % 3 == 1)
{
info = list[i];
return info;
}
}
if (xt == 2)
{
if (ZstUtils.GetBSGKdList(kjh)[1] % 3 == 2)
{
info = list[i];
return info;
}
}
}
//百个
if (site == 2)
{
if (xt == 0)
{
if (ZstUtils.GetBSGKdList(kjh)[2] % 3 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetBSGKdList(kjh)[2] % 3 == 1)
{
info = list[i];
return info;
}
}
if (xt == 2)
{
if (ZstUtils.GetBSGKdList(kjh)[2] % 3 == 2)
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 定位跨度质合形态的上一次情况
///
/// 0为合 1为质
///
/// 0=百十,1=十个,2=百个
///
public static Tcp3Info GetLastZxKdZhTcp3Info(ref List list, int xt, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
List z = new List { 1, 2, 3, 5, 7 };
List h = new List { 0, 4, 6, 8, 9 };
for (int i = rank - 2; i >= 0; i--)
{
int kjh = list[i].kjh;
//百十跨度
if (site == 0)
{
if (xt == 0)
{
if (h.Contains(ZstUtils.GetBSGKdList(kjh)[0]))
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (z.Contains(ZstUtils.GetBSGKdList(kjh)[0]))
{
info = list[i];
return info;
}
}
}
//十个跨度
if (site == 1)
{
if (xt == 0)
{
if (h.Contains(ZstUtils.GetBSGKdList(kjh)[1]))
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (z.Contains(ZstUtils.GetBSGKdList(kjh)[1]))
{
info = list[i];
return info;
}
}
}
//百个跨度
if (site == 2)
{
if (xt == 0)
{
if (h.Contains(ZstUtils.GetBSGKdList(kjh)[2]))
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (z.Contains(ZstUtils.GetBSGKdList(kjh)[2]))
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 定位跨度大小形态的上一次情况
///
/// 0为小 1为大
///
/// 0=百十 1=十个 2=百个
///
public static Tcp3Info GetLastZxKdDxTcp3Info(ref List list, int xt, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
int kjh = list[i].kjh;
//百十跨度
if (site == 0)
{
if (xt == 0)
{
if (ZstUtils.GetBSGKdList(kjh)[0] < 5)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetBSGKdList(kjh)[0] > 4)
{
info = list[i];
return info;
}
}
}
//十个跨度
if (site == 1)
{
if (xt == 0)
{
if (ZstUtils.GetBSGKdList(kjh)[1] < 5)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetBSGKdList(kjh)[1] > 4)
{
info = list[i];
return info;
}
}
}
//百个跨度
if (site == 2)
{
if (xt == 0)
{
if (ZstUtils.GetBSGKdList(kjh)[2] < 5)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetBSGKdList(kjh)[2] > 4)
{
info = list[i];
return info;
}
}
}
}
return info;
}
///
/// 定位跨度奇偶形态的上一次情况
/// xt=0偶
/// xt=1奇
///
///
///
/// 0百十 1十个 2百个
///
public static Tcp3Info GetLastZxKdJoTcp3Info(ref List list, int xt, int rank, int site)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
int kjh = list[i].kjh;
//百十跨度
if (site == 0)
{
if (xt == 0)
{
if (ZstUtils.GetBSGKdList(kjh)[0] % 2 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetBSGKdList(kjh)[0] % 2 != 0)
{
info = list[i];
return info;
}
}
}
//十个跨度
if (site == 1)
{
if (xt == 0)
{
if (ZstUtils.GetBSGKdList(kjh)[1] % 2 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetBSGKdList(kjh)[1] % 2 != 0)
{
info = list[i];
return info;
}
}
}
//百个跨度
if (site == 2)
{
if (xt == 0)
{
if (ZstUtils.GetBSGKdList(kjh)[2] % 2 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetBSGKdList(kjh)[2] % 2 != 0)
{
info = list[i];
return info;
}
}
}
}
return info;
}
#endregion
#region 和尾的上一次情况
///
/// 和尾的上一次数据
///
///
///
///
public static Tcp3Info GetLastHwTcp3Info(ref List list, int hw, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].hw == hw)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 上一次和尾为012路形态的数据
///
/// 0=0路;1=1路;2=2路
///
///
public static Tcp3Info GetLastHw012Tcp3Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].hw % 3 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].hw % 3 == 1)
{
info = list[i];
return info;
}
}
if (xt == 2)
{
if (list[i].hw % 3 == 2)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一次和尾为大/小形态的数据
///
/// 0=小;1=大
///
///
public static Tcp3Info GetLastHwDxTcp3Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].hw < 5)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].hw > 4)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一次和尾为奇/偶形态的数据
///
/// 0=偶;1=奇
///
///
public static Tcp3Info GetLastHwJoTcp3Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].hw % 2 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].hw % 2 != 0)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 和尾求质合形态的上一次情况
///
/// 0为合 1为质
///
///
public static Tcp3Info GetLastHwZhTcp3Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
List z = new List { 1, 2, 3, 5, 7 };
List h = new List { 0, 4, 6, 8, 9 };
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (h.Contains(list[i].hw))
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (z.Contains(list[i].hw))
{
info = list[i];
return info;
}
}
}
return info;
}
#endregion
#region 和值的上一次情况
///
/// 012路
///
///
///
///
public static Tcp3Info GetLastHz012Tcp3Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].hz % 3 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].hz % 3 == 1)
{
info = list[i];
return info;
}
}
if (xt == 2)
{
if (list[i].hz % 3 == 2)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一次和值大小的情况
///
///
///
///
public static Tcp3Info GetLastHzDxTcp3Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].hz < 14)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].hz > 13)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一次和值奇偶的情况
///
///
///
///
public static Tcp3Info GetLastHzJoTcp3Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].hz % 2 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].hz % 2 != 0)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一次和值质合的情况
///
///
///
///
public static Tcp3Info GetLastHzZhTcp3Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (ZstUtils.GetZh(list[i].hz) == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetZh(list[i].hz) != 0)
{
info = list[i];
return info;
}
}
}
return info;
}
#endregion
#region 百十个位号码振幅的上一次
///
/// 百十个位号码振幅的上一次数据
///
///
///
/// 0=百位 1=十位 2=个位
///
public static Tcp3Info GetLastNZfInfo(ref List list, int zf, int rank, int type)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (i > 0)
{
if (type == 0)
{
if (Math.Abs(list[i].n1 - list[i - 1].n1) == zf)
{
info = list[i];
return info;
}
}
if (type == 1)
{
if (Math.Abs(list[i].n2 - list[i - 1].n2) == zf)
{
info = list[i];
return info;
}
}
if (type == 2)
{
if (Math.Abs(list[i].n3 - list[i - 1].n3) == zf)
{
info = list[i];
return info;
}
}
if (type == 4)
{
if (Math.Abs(list[i].n4 - list[i - 1].n4) == zf)
{
info = list[i];
return info;
}
}
if (type == 5)
{
if (Math.Abs(list[i].n5 - list[i - 1].n5) == zf)
{
info = list[i];
return info;
}
}
if (type == 6)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
int lastn = new List { list[i - 1].n1, list[i - 1].n2, list[i - 1].n3, list[i - 1].n4, list[i - 1].n5 }.Max();
if (Math.Abs(n - lastn) == zf)
return list[i];
}
if (type == 7)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
int lastn = new List { list[i - 1].n1, list[i - 1].n2, list[i - 1].n3, list[i - 1].n4, list[i - 1].n5 }.Max();
if (Math.Abs(n - lastn) == zf)
return list[i];
}
}
}
return info;
}
#endregion
#region 上一次某位号码重号的数据
///
/// 上一次某位号码重号的数据
///
///
public static Tcp3Info GetLastNChTcp3Info(ref List list, int rank, int type)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (type == 0)
{
if (i > 0)
{
if ((list[i].n1 - list[i - 1].n1) == 0)
return list[i];
}
}
if (type == 1)
{
if (i > 0)
{
if ((list[i].n2 - list[i - 1].n2) == 0)
return list[i];
}
}
if (type == 2)
{
if (i > 0)
{
if ((list[i].n3 - list[i - 1].n3) == 0)
return list[i];
}
}
if (type == 4)
{
if (i > 0)
{
if ((list[i].n4 - list[i - 1].n4) == 0)
return list[i];
}
}
if (type == 5)
{
if (i > 0)
{
if ((list[i].n5 - list[i - 1].n5) == 0)
return list[i];
}
}
if (type == 6)
{
if (i > 0)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
int lastn = new List { list[i - 1].n1, list[i - 1].n2, list[i - 1].n3, list[i - 1].n4, list[i - 1].n5 }.Max();
if ((n - lastn) == 0)
return list[i];
}
}
if (type == 7)
{
if (i > 0)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Min();
int lastn = new List { list[i - 1].n1, list[i - 1].n2, list[i - 1].n3, list[i - 1].n4, list[i - 1].n5 }.Min();
if ((n - lastn) == 0)
return list[i];
}
}
}
return info;
}
///
/// 非重号的数据
///
///
///
///
public static Tcp3Info GetLastNNotChTcp3Info(ref List list, int rank, int type)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (type == 0)
{
if (i > 0)
{
if ((list[i].n1 - list[i - 1].n1) != 0)
return list[i];
}
}
if (type == 1)
{
if (i > 0)
{
if ((list[i].n2 - list[i - 1].n2) != 0)
return list[i];
}
}
if (type == 2)
{
if (i > 0)
{
if ((list[i].n3 - list[i - 1].n3) != 0)
return list[i];
}
}
if (type == 4)
{
if (i > 0)
{
if ((list[i].n4 - list[i - 1].n4) != 0)
return list[i];
}
}
if (type == 5)
{
if (i > 0)
{
if ((list[i].n5 - list[i - 1].n5) != 0)
return list[i];
}
}
if (type == 6)
{
if (i > 0)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
int lastn = new List { list[i - 1].n1, list[i - 1].n2, list[i - 1].n3, list[i - 1].n4, list[i - 1].n5 }.Max();
if ((n - lastn) != 0)
return list[i];
}
}
if (type == 7)
{
if (i > 0)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Min();
int lastn = new List { list[i - 1].n1, list[i - 1].n2, list[i - 1].n3, list[i - 1].n4, list[i - 1].n5 }.Min();
if ((n - lastn) != 0)
return list[i];
}
}
}
return info;
}
#endregion
#region 号码冷热
///
/// 百十个位上的某个号码最近size期是否有出现过.
/// 出现过为热,否则为冷号
///
///
///
///
///
public static bool GetTcp3HmLrInfo(ref List list, int val, int type, int size, int rank)
{
Tcp3Info info = new Tcp3Info();
info = GetLastTcp3Info(ref list,val, rank, type);
if ((rank - info.rank) <= size)
return true;
return false;
}
///
/// 上一次某位号码是冷/热号的情况..
///
///
///
///
public static Tcp3Info GetTcp3LastHmHrInfo(ref List list, int type, int size, int rank, bool iscool)
{
Tcp3Info info = new Tcp3Info();
if (list != null && list.Count > 0)
{
for (int i = rank - 2; i >= 0; i--)
{
if (iscool)
{
if (type == 0)
{
if (!GetTcp3HmLrInfo(ref list,list[i].n1, type, size, list[i].rank))
return list[i];
}
if (type == 1)
{
if (!GetTcp3HmLrInfo(ref list,list[i].n2, type, size, list[i].rank))
return list[i];
}
if (type == 2)
{
if (!GetTcp3HmLrInfo(ref list,list[i].n3, type, size, list[i].rank))
return list[i];
}
if (type == 4)
{
if (!GetTcp3HmLrInfo(ref list,list[i].n4, type, size, list[i].rank))
return list[i];
}
if (type == 5)
{
if (!GetTcp3HmLrInfo(ref list,list[i].n5, type, size, list[i].rank))
return list[i];
}
if (type == 6)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
if (!GetTcp3HmLrInfo(ref list,n, type, size, list[i].rank))
return list[i];
}
if (type == 7)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
if (!GetTcp3HmLrInfo(ref list,n, type, size, list[i].rank))
return list[i];
}
}
if (!iscool)
{
if (type == 0)
{
if (GetTcp3HmLrInfo(ref list,list[i].n1, type, size, list[i].rank))
return list[i];
}
if (type == 1)
{
if (GetTcp3HmLrInfo(ref list,list[i].n2, type, size, list[i].rank))
return list[i];
}
if (type == 2)
{
if (GetTcp3HmLrInfo(ref list,list[i].n3, type, size, list[i].rank))
return list[i];
}
if (type == 4)
{
if (GetTcp3HmLrInfo(ref list,list[i].n4, type, size, list[i].rank))
return list[i];
}
if (type == 5)
{
if (GetTcp3HmLrInfo(ref list,list[i].n5, type, size, list[i].rank))
return list[i];
}
if (type == 6)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Min();
if (!GetTcp3HmLrInfo(ref list,n, type, size, list[i].rank))
return list[i];
}
if (type == 7)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Min();
if (!GetTcp3HmLrInfo(ref list,n, type, size, list[i].rank))
return list[i];
}
}
}
}
return info;
}
#endregion
///
/// 根据当前排名,取出上一个排名,即上一期的数据.
///
///
///
public static Tcp3Info GetLastQiTcp3Info(ref List list, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].rank == rank - 1)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 根据当前排名,取出下一个排名,即下一期的数据.
///
///
///
public static Tcp3Info GetNextQiTcp3Info(ref List list, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 1; i < list.Count; i++)
{
if (list[i].rank == rank + 1)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 和值的上一次数据
///
///
///
///
public static Tcp3Info GetLastHzTcp3Info(ref List list, int hz, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (list[i].hz == hz)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 和值的上一次数据
///
///
///
///
public static Tcp3Info GetLastHzTcp3Info(ref List list, int shz, int ehz, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (shz <= list[i].hz && ehz >= list[i].hz)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 根据当前期的组选形态和排名,查询出上一次出现此形态时的数据
/// 遗漏计划时
///
///
///
///
public static Tcp3Info GetLastZxxtTcp3Info(ref List list, int zx, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
///升序的情况
///未实现走势图倒序的情况..
for (int i = rank - 2; i >= 0; i--)
{
//组三
if (zx == 3)
{
if (list[i].n1 == list[i].n2 || list[i].n2 == list[i].n3 || list[i].n1 == list[i].n3)
{
info = list[i];
return info;
}
}
//组六
if (zx == 6)
{
if (list[i].n1 != list[i].n2 && list[i].n1 != list[i].n3)
{
info = list[i];
return info;
}
}
//豹子
if (zx == 0)
{
if (list[i].n1 == list[i].n2 && list[i].n2 == list[i].n3)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 根据当前出号和排名,查询出上一次出此号时的数据
/// 主要用在算遗漏时
///
/// 值
/// 当前排名
/// 类型 0=百位号;1=十位号;2=个位号;3=组选
///
public static Tcp3Info GetLastTcp3Info(ref List list, int val, int rank, int type)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
///升序的情况
///未实现走势图倒序的情况..
for (int i = rank - 2; i >= 0; i--)
{
if (type == 0)
{
if (list[i].n1 == val)
{
info = list[i];
return info;
}
}
if (type == 1)
{
if (list[i].n2 == val)
{
info = list[i];
return info;
}
}
if (type == 2)
{
if (list[i].n3 == val)
{
info = list[i];
return info;
}
}
if (type == 4)
{
if (list[i].n4 == val)
{
info = list[i];
return info;
}
}
if (type == 5)
{
if (list[i].n5 == val)
{
info = list[i];
return info;
}
}
if (type == 6)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
if (n == val)
{
info = list[i];
return info;
}
}
if (type == 7)
{
int n = new List { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Min();
if (n == val)
{
info = list[i];
return info;
}
}
if (type == 3)
{
if (list[i].n1 == val || list[i].n2 == val || list[i].n3 == val)
{
info = list[i];
return info;
}
}
}
return info;
}
#endregion
#region P5的根据当期数据,查询出上一次的数据
///
/// 根据当前排名,查询出上一期数据.
///
///
///
///
///
public static Tcp3Info GetLastTcp5Info(ref List list, int val, int rank, int type)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
///升序的情况
///未实现走势图倒序的情况..
for (int i = rank - 2; i >= 0; i--)
{
if (type == 0)
{
if (list[i].n1 == val)
{
info = list[i];
return info;
}
}
if (type == 1)
{
if (list[i].n2 == val)
{
info = list[i];
return info;
}
}
if (type == 2)
{
if (list[i].n3 == val)
{
info = list[i];
return info;
}
}
if (type == 3)
{
if (list[i].n4 == val)
{
info = list[i];
return info;
}
}
if (type == 4)
{
if (list[i].n5 == val)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一次p5和尾=val的数据
///
///
///
///
public static Tcp3Info GetLastHwTcp5Info(ref List list, int val, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (ZstUtils.GetHw(list[i].hz5) == val)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 上一次p5和值=val的数据
///
///
///
///
public static Tcp3Info GetLastHzTcp5Info(ref List list, int val, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (val < 12 && list[i].hz5 < 12)
{
info = list[i];
return info;
}
if (val > 33 && list[i].hz5 > 33)
{
info = list[i];
return info;
}
if (list[i].hz5 == val)
{
info = list[i];
return info;
}
}
return info;
}
///
/// 上一次p5 hw奇偶
///
///
///
///
public static Tcp3Info GetLastHwJoTcp5Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (ZstUtils.GetHw(list[i].hz5) % 2 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetHw(list[i].hz5) % 2 != 0)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一次p5和值奇偶
///
///
///
///
public static Tcp3Info GetLastHzJoTcp5Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].hz5 % 2 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].hz5 % 2 != 0)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一次P5大小
///
///
///
///
public static Tcp3Info GetLastHwDxTcp5Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (ZstUtils.GetHw(list[i].hz5) < 5)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetHw(list[i].hz5) > 4)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一次p5和值大小
///
///
///
///
public static Tcp3Info GetLastHzDxTcp5Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].hz5 < 23)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].hz5 > 22)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// p5 上次012
///
///
///
///
public static Tcp3Info GetLastHw012Tcp5Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (ZstUtils.GetHw(list[i].hz5) == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (ZstUtils.GetHw(list[i].hz5) == 1)
{
info = list[i];
return info;
}
}
if (xt == 2)
{
if (ZstUtils.GetHw(list[i].hz5) == 2)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// p5和值上次012情况
///
///
///
///
public static Tcp3Info GetLastHz012Tcp5Info(ref List list, int xt, int rank)
{
Tcp3Info info = new Tcp3Info();
int size = list.Count;
for (int i = rank - 2; i >= 0; i--)
{
if (xt == 0)
{
if (list[i].hz5 % 3 == 0)
{
info = list[i];
return info;
}
}
if (xt == 1)
{
if (list[i].hz5 % 3 == 1)
{
info = list[i];
return info;
}
}
if (xt == 2)
{
if (list[i].hz5 % 3 == 2)
{
info = list[i];
return info;
}
}
}
return info;
}
///
/// 上一次p5大小比的情况
///
///
///
///
public static Tcp3Info GetLastP5DxbInfo(ref List list, string bz, int rank)
{
Tcp3Info info = new Tcp3Info();
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 (ZstUtils.GetDxb(kjh, 5).Equals(bz))
{
info = list[i];
return info;
}
}
return info;
}
///
/// 上一次p5奇偶比的情况
///
///
///
///
public static Tcp3Info GetLastP5JobInfo(ref List list, string bz, int rank)
{
Tcp3Info info = new Tcp3Info();
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 (ZstUtils.GetJob(kjh).Equals(bz))
{
info = list[i];
return info;
}
}
return info;
}
///