protected override void ParseData(SqliteDataReader reader) { if (reader == null || !reader.HasRows) { return; } while (reader.Read()) { DBMagicItem ad = new DBMagicItem(); ad.Id = DBTextResource.ParseUI(GetReaderString(reader, "id")); ad.SortId = DBTextResource.ParseI(GetReaderString(reader, "sort")); ad.Name = GetReaderString(reader, "name"); ad.IconName = GetReaderString(reader, "icon_name"); ad.Color = DBTextResource.ParseUI(GetReaderString(reader, "color")); ad.AssistAttrs = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attrs")); ad.SkillList = DBTextResource.ParseArrayUint(GetReaderString(reader, "skills"), ","); data.Add(ad.Id, ad); SortData.Add(ad); } SortData.Sort((a, b) => { if (a.SortId < b.SortId) { return(-1); } else if (a.SortId > b.SortId) { return(1); } return(0); }); }
protected override void ParseData(SqliteDataReader reader) { if (reader == null || !reader.HasRows) { return; } while (reader.Read()) { DBTitleItem ad = new DBTitleItem(); ad.Id = DBTextResource.ParseUI(GetReaderString(reader, "id")); ad.Name = GetReaderString(reader, "name"); ad.Icon = GetReaderString(reader, "icon_name"); ad.EffectId = DBTextResource.ParseUI(GetReaderString(reader, "effect_id")); ad.GetCondition = GetReaderString(reader, "get_condition"); ad.TimeDesc = GetReaderString(reader, "time_desc"); ad.SortId = DBTextResource.ParseUI(GetReaderString(reader, "sort_id")); ad.PageType = DBTextResource.ParseUI(GetReaderString(reader, "page")); ad.Type = DBTextResource.ParseUI(GetReaderString(reader, "type")); ad.IgnoreNewTitle = DBTextResource.ParseUI_s(GetReaderString(reader, "ignore_new_title"), 0) == 1; ad.Time = DBTextResource.ParseUI(GetReaderString(reader, "time")); ad.CollectAttr = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "collect_attr")); ad.WearAttr = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "wear_attr")); ad.Quality = DBTextResource.ParseUI_s(GetReaderString(reader, "quality"), 0); Data.Add(ad.Id, ad); } }
DBGrowLvItem ReadData(uint grow_type, uint level) { uint uid = grow_type + level * 100; string query = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\" AND {0}.{3}=\"{4}\"", mTableName, "type", grow_type, "lv", level); var reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query); if (reader == null) { mInfos[uid] = null; return(null); } if (!reader.HasRows || !reader.Read()) { mInfos[uid] = null; reader.Close(); reader.Dispose(); return(null); } DBGrowLvItem info = new DBGrowLvItem(); info.GrowType = DBTextResource.ParseUI_s(GetReaderString(reader, "type"), 0); info.Lv = DBTextResource.ParseUI_s(GetReaderString(reader, "lv"), 0); info.Exp = DBTextResource.ParseUI_s(GetReaderString(reader, "exp"), 0); info.Cost = DBTextResource.ParseDBGoodsItem(GetReaderString(reader, "cost")); info.GetExp = DBTextResource.ParseUI_s(GetReaderString(reader, "get_exp"), 0); info.AttrArray = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr")); //属性加成 mInfos[uid] = info; reader.Close(); reader.Dispose(); return(info); }
public DBPetStepItem GetOneInfo(uint pet_id, uint step) { OneDBPetStep one_pet_step; if (!mInfos.TryGetValue(pet_id, out one_pet_step)) { one_pet_step = new OneDBPetStep(); one_pet_step.Id = pet_id; one_pet_step.OneDBPetStepArray = new Dictionary <uint, DBPetStepItem>(); mInfos.Add(one_pet_step.Id, one_pet_step); } Dictionary <uint, DBPetStepItem> dic = one_pet_step.OneDBPetStepArray; DBPetStepItem info = null; if (!dic.TryGetValue(step, out info)) { string query_str = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\" AND {0}.{3}=\"{4}\" ", mTableName, "id", pet_id.ToString(), "step", step.ToString()); var table_reader = DBManager.Instance.ExecuteSqliteQueryToReader(mFileName, mTableName, query_str); if (table_reader == null) { dic[step] = null; return(null); } if (!table_reader.HasRows) { dic[step] = null; table_reader.Close(); table_reader.Dispose(); return(null); } if (!table_reader.Read()) { dic[step] = null; table_reader.Close(); table_reader.Dispose(); return(null); } info = new DBPetStepItem(); info.Id = DBTextResource.ParseUI_s(GetReaderString(table_reader, "id"), 0); info.Step = DBTextResource.ParseUI_s(GetReaderString(table_reader, "step"), 0); info.SelfAttr = DBTextResource.ParseDBAttrItems(GetReaderString(table_reader, "self_attr")); info.OwnerAttr = DBTextResource.ParseDBAttrItems(GetReaderString(table_reader, "owner_attr")); info.CostArray = DBTextResource.ParseDBGoodsItem(GetReaderString(table_reader, "cost")); dic.Add(step, info); table_reader.Close(); table_reader.Dispose(); Debug.Log("load pet step " + pet_id + " " + step); } return(info); }
public DBWeddingRingGoodsItem GetData(uint id_info) { DBWeddingRingGoodsItem ad = null; if (data.TryGetValue(id_info, out ad)) { return(ad); } string query_str = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", "data_ring", "id", id_info.ToString()); var table_reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, "data_ring", query_str); if (table_reader == null) { data[id_info] = null; return(null); } if (!table_reader.HasRows) { data[id_info] = null; table_reader.Close(); table_reader.Dispose(); return(null); } if (!table_reader.Read()) { data[id_info] = null; table_reader.Close(); table_reader.Dispose(); return(null); } ad = new DBWeddingRingGoodsItem(); ad.id_info = DBTextResource.ParseUI(GetReaderString(table_reader, "id")); ad.step = DBTextResource.ParseUI(GetReaderString(table_reader, "step")); ad.lv = DBTextResource.ParseUI(GetReaderString(table_reader, "lv")); ad.need_exp = DBTextResource.ParseUI(GetReaderString(table_reader, "need_exp")); ad.normal_attrs = DBTextResource.ParseDBAttrItems(GetReaderString(table_reader, "normal_attrs")); ad.couple_attrs = DBTextResource.ParseDBAttrItems(GetReaderString(table_reader, "couple_attrs")); ad.skill = DBTextResource.ParseUI(GetReaderString(table_reader, "skill")); ad.gid = DBTextResource.ParseUI(GetReaderString(table_reader, "gid")); data.Add(ad.id_info, ad); table_reader.Close(); table_reader.Dispose(); return(ad); }
//protected override void ParseData(SqliteDataReader reader) //{ // mInfos.Clear(); // DBPetQualItem info; // if (reader != null) // { // if (reader.HasRows == true) // { // while (reader.Read()) // { // info = new DBPetQualItem(); // info.Id = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0); // info.Qual = DBTextResource.ParseUI_s(GetReaderString(reader, "qual"), 0); // info.Exp = DBTextResource.ParseUI_s(GetReaderString(reader, "exp"), 0); // info.GetExp = DBTextResource.ParseUI_s(GetReaderString(reader, "get_exp"), 0); // info.OwnerAttr = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr")); // info.CostArray = DBTextResource.ParseDBGoodsItem(GetReaderString(reader, "cost")); // if (mInfos.ContainsKey(info.Id) == false) // { // OneDBPetQual one_pet_qual = new OneDBPetQual(); // one_pet_qual.Id = info.Id; // one_pet_qual.MaxQual = 0; // one_pet_qual.OneDBPetQualArray = new Dictionary<uint, DBPetQualItem>(); // mInfos.Add(one_pet_qual.Id, one_pet_qual); // } // if (mInfos[info.Id].MaxQual < info.Qual) // mInfos[info.Id].MaxQual = info.Qual; // mInfos[info.Id].OneDBPetQualArray[info.Qual] = info; // } // } // } //} public DBPetQualItem GetOneInfo(uint pet_id, uint qual) { Dictionary <uint, DBPetQualItem> dic; if (!mInfosDic.TryGetValue(pet_id, out dic)) { dic = new Dictionary <uint, DBPetQualItem>(); mInfosDic.Add(pet_id, dic); } DBPetQualItem item; if (!dic.TryGetValue(qual, out item)) { string query_str = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\" AND {0}.{3}=\"{4}\" ", PetQualTableName, "id", pet_id.ToString(), "qual", qual.ToString()); var table_reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, PetQualTableName, query_str); if (table_reader == null) { dic[qual] = null; return(null); } if (!table_reader.HasRows) { dic[qual] = null; table_reader.Close(); table_reader.Dispose(); return(null); } if (!table_reader.Read()) { dic[qual] = null; table_reader.Close(); table_reader.Dispose(); return(null); } item = new DBPetQualItem(); item.Id = DBTextResource.ParseUI_s(GetReaderString(table_reader, "id"), 0); item.Qual = DBTextResource.ParseUI_s(GetReaderString(table_reader, "qual"), 0); item.Exp = DBTextResource.ParseUI_s(GetReaderString(table_reader, "exp"), 0); item.GetExp = DBTextResource.ParseUI_s(GetReaderString(table_reader, "get_exp"), 0); item.OwnerAttr = DBTextResource.ParseDBAttrItems(GetReaderString(table_reader, "attr")); item.CostArray = DBTextResource.ParseDBGoodsItem(GetReaderString(table_reader, "cost")); dic.Add(qual, item); table_reader.Close(); table_reader.Dispose(); } return(item); }
private DBMagicEquipItem GetItemInfo(uint gid) { string query = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", mTableName, "gid", gid); var reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query); if (reader == null) { data[gid] = null; return(null); } if (!reader.HasRows || !reader.Read()) { data[gid] = null; reader.Close(); reader.Dispose(); return(null); } DBMagicEquipItem ad = new DBMagicEquipItem(); ad.Gid = gid; ad.PosId = DBTextResource.ParseUI(GetReaderString(reader, "pos_id")); ad.StrengthMax = DBTextResource.ParseUI(GetReaderString(reader, "max_lv")); ad.Star = DBTextResource.ParseUI(GetReaderString(reader, "star")); ad.SwallowExpValue = DBTextResource.ParseUI(GetReaderString(reader, "exp")); ad.DefaultAppendDesc = GetReaderString(reader, "default_append_desc"); ad.BaseAttrs = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "base_attrs")); uint num = 0; string appendAttrStr = GetReaderString(reader, "spec_attrs"); appendAttrStr = appendAttrStr.Replace(" ", ""); var matchs = Regex.Matches(appendAttrStr, @"\{(\d+),(\d+)\}"); foreach (Match _match in matchs) { if (_match.Success) { num = num + DBTextResource.ParseUI(_match.Groups[2].Value); } } ad.AppendAttrNum = num; data.Add(ad.Gid, ad); reader.Close(); reader.Dispose(); return(ad); }
protected override void ParseData(SqliteDataReader reader) { mInfos.Clear(); mCostInfos.Clear(); DBPetStepItem info; if (reader != null) { if (reader.HasRows == true) { while (reader.Read()) { info = new DBPetStepItem(); info.Id = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0); info.Step = DBTextResource.ParseUI_s(GetReaderString(reader, "step"), 0); info.SelfAttr = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "self_attr")); info.OwnerAttr = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "owner_attr")); info.CostArray = DBTextResource.ParseDBGoodsItem(GetReaderString(reader, "cost")); if (mInfos.ContainsKey(info.Id) == false) { OneDBPetStep one_pet_step = new OneDBPetStep(); one_pet_step.Id = info.Id; //one_pet_step.MaxStep = 0; one_pet_step.OneDBPetStepArray = new Dictionary <uint, DBPetStepItem>(); mInfos.Add(one_pet_step.Id, one_pet_step); } //if (mInfos[info.Id].MaxStep < info.Step) // mInfos[info.Id].MaxStep = info.Step; mInfos[info.Id].OneDBPetStepArray[info.Step] = info; if (info.CostArray != null && info.CostArray.Count > 0) { if (mCostInfos.ContainsKey(info.CostArray[0].goods_id) == false) { mCostInfos[info.CostArray[0].goods_id] = info.Id; } } } } } }
public DBHonorItem GetData(uint id) { DBHonorItem ad = null; if (data.TryGetValue(id, out ad)) { return(ad); } string query = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", mTableName, "id", id); var reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query); if (reader == null) { data[id] = null; return(null); } if (!reader.HasRows || !reader.Read()) { data[id] = null; reader.Close(); reader.Dispose(); return(null); } var ret = new DBHonorItem(); ret.Id = DBTextResource.ParseUI(GetReaderString(reader, "id")); ret.Name = GetReaderString(reader, "name"); ret.Icon = GetReaderString(reader, "icon"); ret.NeedPower = DBTextResource.ParseL(GetReaderString(reader, "need_pw")); ret.NeedGoods = DBTextResource.ParseDBGoodsItem(GetReaderString(reader, "need_goods")); ret.AddAttr = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr")); ret.Quality = DBTextResource.ParseUI_s(GetReaderString(reader, "qual"), 0); data.Add(ret.Id, ret); reader.Close(); reader.Dispose(); return(ret); }
/// <summary> /// 根据id和level获取圣痕属性 /// </summary> /// <param name="id"></param> /// <param name="level"></param> /// <returns></returns> public DBStigmaLvItem GetOneInfo(uint id, uint level) { uint uid = id * 1000 + level; DBStigmaLvItem info; if (mInfos.TryGetValue(uid, out info)) { return(info); } string query_str = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\" AND {0}.{3}=\"{4}\"", mTableName, "id", id, "lv", level); var reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query_str); if (reader == null) { mInfos[uid] = null; return(null); } if (!reader.HasRows || !reader.Read()) { mInfos[uid] = null; reader.Close(); reader.Dispose(); return(null); } info = new DBStigmaLvItem(); info.Id = id; info.Lv = level; info.Exp = GetReaderUint(reader, "exp"); info.Attr = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr")); info.attr_percent = DBTextResource.ParseUI_s(GetReaderString(reader, "attr_percent"), 0); mInfos[uid] = info; reader.Close(); reader.Dispose(); return(info); }
protected override void ParseData(SqliteDataReader reader) { if (reader == null || !reader.HasRows) { return; } while (reader.Read()) { DBMountEquipGoodsItem ad = new DBMountEquipGoodsItem(); ad.gid = DBTextResource.ParseUI(GetReaderString(reader, "gid")); ad.ride_limit = DBTextResource.ParseUI(GetReaderString(reader, "ride_limit")); ad.pos_id = DBTextResource.ParseUI(GetReaderString(reader, "pos_id")); ad.lv_step = DBTextResource.ParseUI(GetReaderString(reader, "lv_step")); ad.attrs = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attrs")); data.Add(ad.gid, ad); if (pos_list.Contains(ad.pos_id) == false) { pos_list.Add(ad.pos_id); } } }
protected override void ParseData(SqliteDataReader reader) { mInfos.Clear(); mSortInfos.Clear(); mNormalDegreeSortInfos.Clear(); DBGrowSkinItem info; if (reader != null) { if (reader.HasRows == true) { while (reader.Read()) { info = new DBGrowSkinItem(); info.GrowType = DBTextResource.ParseUI_s(GetReaderString(reader, "type"), 0); info.Id = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0); info.Name = GetReaderString(reader, "name"); info.Desc = GetReaderString(reader, "desc"); //描述 info.UnlockType = (SkinUnLockType)DBTextResource.ParseUI_s(GetReaderString(reader, "unlock_type"), 0); //解锁方式 if (info.UnlockType == SkinUnLockType.WhenOpenFunc) { //info.UnlockPlayerLevel = DBTextResource.ParseUI_s(GetReaderString(reader, "unlock_condition"), 0); //解锁条件 } else if (info.UnlockType == SkinUnLockType.CostGoods) { info.UnLockGoodsConditionArray = new List <DBPet.UnLockGoodsCondition>(); List <List <uint> > str_array = DBTextResource.ParseArrayUintUint(GetReaderString(reader, "unlock_condition")); for (int index = 0; index < str_array.Count; ++index) { if (str_array[index].Count >= 2) { DBPet.UnLockGoodsCondition tmp_item = new DBPet.UnLockGoodsCondition(); tmp_item.goods_id = str_array[index][0]; tmp_item.goods_num = str_array[index][1]; info.UnLockGoodsConditionArray.Add(tmp_item); } else { GameDebug.LogError(string.Format("There is error unlock_condition (id = {0}) in data_grow_skin", info.Id)); } } } else if (info.UnlockType == SkinUnLockType.GrowLevel) { info.UnlockGrowLevel = DBTextResource.ParseUI_s(GetReaderString(reader, "unlock_condition"), 0); //解锁条件 } else { } info.UnlockDesc = GetReaderString(reader, "unlock_desc"); //解锁说明 info.SortId = DBTextResource.ParseUI_s(GetReaderString(reader, "sort_id"), 0); //排序ID info.Quality = DBTextResource.ParseUI_s(GetReaderString(reader, "quality"), 0); //品质 info.ActorId = DBTextResource.ParseUI_s(GetReaderString(reader, "actor_id"), 0); //角色ID info.ModelLocalPos = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_pos")); info.ModelLocalScale = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_scale")); info.ModelLocalScaleGoods = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_scale_goods")); info.ModelLocalAngles = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_angles")); info.ModelParentDefaultAngles = DBTextResource.ParseVector3(GetReaderString(reader, "model_parent_default_angles")); info.ModelParentLocalPos = DBTextResource.ParseVector3(GetReaderString(reader, "model_parent_local_pos")); info.ModelCameraOffset = DBTextResource.ParseVector3(GetReaderString(reader, "model_camera_offset")); info.ModelDefaultAngle = DBTextResource.ParseVector3(GetReaderString(reader, "model_default_angle")); info.ModelSceneOffset = DBTextResource.ParseVector3(GetReaderString(reader, "model_scene_offset")); info.SurfaceOffset = DBTextResource.ParseVector3(GetReaderString(reader, "surfaceOffset")); info.GetOffset = DBTextResource.ParseVector3(GetReaderString(reader, "getOffset")); info.AttrArray = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr")); //属性加成 info.IdleActionWhenRiding = GetReaderString(reader, "idleActionWhenRiding"); info.RunActionWhenRiding = GetReaderString(reader, "runActionWhenRiding"); info.SceneModelOffset = DBTextResource.ParseVector3(GetReaderString(reader, "sceneModelOffset")); if (mInfos.ContainsKey(info.GrowType) == false) { mInfos.Add(info.GrowType, new Dictionary <uint, DBGrowSkinItem>()); } mInfos[info.GrowType][info.Id] = info; if (mSortInfos.ContainsKey(info.GrowType) == false) { mSortInfos.Add(info.GrowType, new List <DBGrowSkinItem>()); } mSortInfos[info.GrowType].Add(info); if (info.UnlockType == SkinUnLockType.WhenOpenFunc || info.UnlockType == SkinUnLockType.GrowLevel) { if (mNormalDegreeSortInfos.ContainsKey(info.GrowType) == false) { mNormalDegreeSortInfos.Add(info.GrowType, new List <DBGrowSkinItem>()); } mNormalDegreeSortInfos[info.GrowType].Add(info); } } foreach (var item in mSortInfos) { item.Value.Sort((a, b) => { if (a.SortId < b.SortId) { return(-1); } else if (a.SortId > b.SortId) { return(1); } if (a.Id < b.Id) { return(-1); } else if (a.Id > b.Id) { return(1); } return(0); }); } foreach (var item in mNormalDegreeSortInfos) { item.Value.Sort((a, b) => { if (a.UnlockType == SkinUnLockType.WhenOpenFunc) { if (b.UnlockType != SkinUnLockType.WhenOpenFunc) { return(-1); } } else { if (b.UnlockType == SkinUnLockType.WhenOpenFunc) { return(1); } else { if (a.UnlockGrowLevel < b.UnlockGrowLevel) { return(-1); } else if (a.UnlockGrowLevel > b.UnlockGrowLevel) { return(1); } return(0); } } if (a.Id < b.Id) { return(-1); } else if (a.Id > b.Id) { return(1); } return(0); }); } } } }
protected override void ParseData(SqliteDataReader reader) { mInfos.Clear(); mOpenSkillInfos.Clear(); DBDataAllSkill db_all_skill = DBManager.Instance.GetDB <DBDataAllSkill>(); DBPetFetterItem info; if (reader != null) { if (reader.HasRows == true) { while (reader.Read()) { info = new DBPetFetterItem(); info.PetId = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0); info.Index = DBTextResource.ParseUI_s(GetReaderString(reader, "index"), 0); info.Condition = new List <DBPet.UnLockPrePetCondition>(); List <List <uint> > str_array = DBTextResource.ParseArrayUintUint(GetReaderString(reader, "condition")); if (str_array != null) { for (int index = 0; index < str_array.Count; ++index) { if (str_array[index] != null && str_array[index].Count >= 2) { DBPet.UnLockPrePetCondition condition = new DBPet.UnLockPrePetCondition(); condition.pet_id = str_array[index][0]; condition.step_level = str_array[index][1]; info.Condition.Add(condition); } } } info.Attr = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr")); List <uint> skill_array = DBTextResource.ParseArrayUint(GetReaderString(reader, "skills"), ","); info.Skills = new Dictionary <uint, List <FetterSkillItem> >(); if (skill_array != null) { for (int index = 0; index < skill_array.Count; ++index) { FetterSkillItem item = new FetterSkillItem(); item.skill_id = skill_array[index]; DBDataAllSkill.AllSkillInfo skill_info = db_all_skill.GetOneAllSkillInfo(item.skill_id); uint vocation = 0; if (skill_info != null) { vocation = skill_info.Require_race; } item.vocation = vocation; if (info.Skills.ContainsKey(item.vocation) == false) { info.Skills.Add(item.vocation, new List <FetterSkillItem>()); } info.Skills[item.vocation].Add(item); mOpenSkillInfos[item.skill_id] = info; } } if (info.Skills.ContainsKey(DBDataAllSkill.CommonVocationType)) { foreach (var item in info.Skills) { if (item.Key == DBDataAllSkill.CommonVocationType) { continue; } item.Value.AddRange(info.Skills[DBDataAllSkill.CommonVocationType]); } } if (mInfos.ContainsKey(info.PetId) == false) { mInfos.Add(info.PetId, new List <DBPetFetterItem>()); } mInfos[info.PetId].Add(info); } } } foreach (var item in mInfos) { item.Value.Sort((a, b) => { if (a.Index < b.Index) { return(-1); } else if (a.Index > b.Index) { return(1); } return(0); }); } }