private void AddConditions(Dictionary <string, object> conditionsParameters) { if (conditionsParameters != null) { foreach (var item in conditionsParameters) { if (!ConditionValues.ContainsKey(item.Key)) { ConditionValues.Add(item.Key, item.Value); } } } }
public override LinqDLR2SqlWhereOperator WhereNotIn(object[] args) { if (args == null || args.Length <= 0) return null; var splitchar = ","; if (args.Length > 1) splitchar = ComFunc.nvl(args[1]); var pname = "" + Convert.ToInt64(ComFunc.RandomCode(4)); ConditionValues.Add(pname, splitchar + args[0] + splitchar); var re = ""; re = $"charindex('{splitchar}'{LinkFlag}{ColumnExpress}{LinkFlag}'{splitchar}',{ParamFlag}{pname})<=0"; return new LinqDLR2SqlWhereOperator(re, ConditionValues); }
/// <summary> /// 右模糊匹配操作 /// </summary> /// <param name="args"></param> /// <returns></returns> protected virtual object EndWith(object[] args) { if (args == null || args.Length <= 0) { return(null); } var pname = "" + Convert.ToInt64(ComFunc.ToTimeStampTS(DateTime.Now).TotalMilliseconds); ConditionValues.Add(pname, args[0]); var re = ""; re = $"{ColumnExpress} LIKE {LinkFlag}{ParamFlag}{pname}{LinkFlag}'{LikeMatchFlag}'"; return(new LinqDLR2SqlWhereOperator(re, ConditionValues)); }
protected override object Contains(object[] args) { if (args == null || args.Length <= 0) { return(null); } var pname = "" + Convert.ToInt64(ComFunc.RandomCode(4)); ConditionValues.Add(pname, args[0]); var re = ""; re = $"{ColumnExpress} LIKE CONCAT('{SqlFlags.LikeMatchFlag}',{SqlFlags.ParamFlag}{pname},'{SqlFlags.LikeMatchFlag}')"; return(new LinqDLR2SqlWhereOperator(re, ConditionValues)); }
/// <summary> /// 将右侧值转化成对应的表达式,并添加条件值 /// </summary> /// <param name="v"></param> /// <returns></returns> protected virtual string Convert2Express(object v) { var re = ""; var pname = "" + Convert.ToInt64(ComFunc.RandomCode(4)); //防止有key重复导致的异常 while (ConditionValues.ContainsKey(pname)) { pname = "" + Convert.ToInt64(ComFunc.RandomCode(4)); } ConditionValues.Add(pname, v); re = $"{SqlFlags.ParamFlag}{pname}"; return(re); }
/// <summary> /// 将右侧值转化成对应的表达式,并添加条件值 /// </summary> /// <param name="v"></param> /// <returns></returns> private string Convert2Express(object v) { var pname = "" + Convert.ToInt64(ComFunc.ToTimeStampTS(DateTime.Now).TotalMilliseconds); var re = ""; if (v is LinqDLRColumn) { re = $"{((LinqDLRColumn)v).ColumnExpress}"; } else { ConditionValues.Add(pname, v); re = $"{ParamFlag}{pname}"; } return(re); }
public override LinqDLR2SqlWhereOperator WhereNotIn(object[] args) { if (args == null || args.Length <= 0) { return(null); } var splitchar = ","; if (args.Length > 1) { splitchar = ComFunc.nvl(args[1]); } var pname = "" + Convert.ToInt64(ComFunc.RandomCode(4)); var re = ""; ConditionValues.Add(pname, splitchar + args[0] + splitchar); re = $"POSITION('{splitchar}'{SqlFlags.LinkFlag}{ColumnExpress}{SqlFlags.LinkFlag}'{splitchar}' in {SqlFlags.ParamFlag}{pname})<=0"; return(new LinqDLR2SqlWhereOperator(re, ConditionValues)); }
public override LinqDLR2SqlWhereOperator WhereIn(object[] args) { if (args == null || args.Length <= 0) { return(null); } var splitchar = ","; if (args.Length > 1) { splitchar = ComFunc.nvl(args[1]); } var pname = "" + Convert.ToInt64(ComFunc.RandomCode(4)); var re = ""; ConditionValues.Add(pname, splitchar + args[0] + splitchar); re = $"locate(concat('{splitchar}',{ColumnExpress},'{splitchar}'),{ParamFlag}{pname})>0"; return(new LinqDLR2SqlWhereOperator(re, ConditionValues)); }
protected override void Load(BinaryReader reader) { // header (unencrypted) Personality = reader.ReadUInt32(); // 0000 ushort zero = reader.ReadUInt16(); // 0004 ushort checksum = reader.ReadUInt16(); // 0006 // read out the main payload, apply xor decryption byte[][] blocks = new byte[4][]; for (int x = 0; x < 4; x++) // 0008 blocks[x] = reader.ReadBytes(32); DecryptBlocks(blocks, checksum); ShuffleBlocks(blocks, Personality, true); IsBadEgg = ComputeChecksum(blocks) != checksum; int ribbons1, ribbons2, ribbons3; { byte[] block = blocks[0]; SpeciesID = BitConverter.ToUInt16(block, 0); HeldItemID = BitConverter.ToUInt16(block, 2); TrainerID = BitConverter.ToUInt32(block, 4); Experience = BitConverter.ToInt32(block, 8); Happiness = block[12]; AbilityID = block[13]; Markings = (Markings)block[14]; Language = (Languages)block[15]; EVs = new ByteStatValues(block[16], block[17], block[18], block[19], block[20], block[21]); ContestStats = new ConditionValues(block[22], block[23], block[24], block[25], block[26], block[27]); ribbons2 = BitConverter.ToInt32(block, 28); } { byte[] block = blocks[1]; Moves[0] = new MoveSlot(m_pokedex, BitConverter.ToUInt16(block, 0), block[12], block[8]); Moves[1] = new MoveSlot(m_pokedex, BitConverter.ToUInt16(block, 2), block[13], block[9]); Moves[2] = new MoveSlot(m_pokedex, BitConverter.ToUInt16(block, 4), block[14], block[10]); Moves[3] = new MoveSlot(m_pokedex, BitConverter.ToUInt16(block, 6), block[15], block[11]); int ivs = BitConverter.ToInt32(block, 16); IVs = new IvStatValues(ivs & 0x3fffffff); IsEgg = (ivs & 0x40000000) != 0; HasNickname = (ivs & 0x80000000) != 0; ribbons1 = BitConverter.ToInt32(block, 20); byte forme = block[24]; FatefulEncounter = (forme & 0x01) != 0; m_female = (forme & 0x02) != 0; m_genderless = (forme & 0x04) != 0; FormID = (byte)(forme >> 3); ShinyLeaves = (ShinyLeaves)block[25]; Unknown1 = BitConverter.ToUInt16(block, 26); EggLocationID_Plat = BitConverter.ToUInt16(block, 28); LocationID_Plat = BitConverter.ToUInt16(block, 30); } { byte[] block = blocks[2]; NicknameEncoded = new EncodedString4(block, 0, 22); Unknown2 = block[22]; Version = (Versions)block[23]; ribbons3 = BitConverter.ToInt32(block, 24); Unknown3 = BitConverter.ToUInt32(block, 28); } { byte[] block = blocks[3]; TrainerNameEncoded = new EncodedString4(block, 0, 16); // todo: store as DateTime EggDate = new byte[3]; Array.Copy(block, 16, EggDate, 0, 3); Date = new byte[3]; Array.Copy(block, 19, Date, 0, 3); EggLocationID = BitConverter.ToUInt16(block, 22); LocationID = BitConverter.ToUInt16(block, 24); byte pokerusStatus = block[26]; PokerusDaysLeft = (byte)(pokerusStatus & 0x0f); PokerusStrain = (byte)(pokerusStatus >> 4); PokeBallID = block[27]; byte encounter_level = block[28]; EncounterLevel = (byte)(encounter_level & 0x7f); bool trainerFemale = (encounter_level & 0x80) != 0; TrainerGender = trainerFemale ? TrainerGenders.Female : TrainerGenders.Male; EncounterType = block[29]; PokeBallID_Hgss = block[30]; Unknown4 = block[31]; } byte[] ribbons = new byte[12]; Array.Copy(BitConverter.GetBytes(ribbons1), 0, ribbons, 0, 4); Array.Copy(BitConverter.GetBytes(ribbons2), 0, ribbons, 4, 4); Array.Copy(BitConverter.GetBytes(ribbons3), 0, ribbons, 8, 4); Ribbons.Clear(); UnknownRibbons.Clear(); IDictionary<int, Ribbon> allRibbons = m_pokedex.Ribbons(Generations.Generation4); for (int x = 0; x < 96; x++) { if (PokemonPartyBase.HasRibbon(ribbons, x)) { if (allRibbons.ContainsKey(x)) Ribbons.Add(allRibbons[x]); else UnknownRibbons.Add(x); } } }