亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于查詢效率優化的問題

關于查詢效率優化的問題

滄海一幻覺 2018-12-07 11:10:32
各位大俠幫幫忙 我寫了個邏輯根據TAG獲取游戲信息 需求是根據游戲ID獲取游戲關聯的TAG 取前3個 第一個TAG關聯9個游戲 第2和第3個各關聯3個 如果總是不到15個 就按照游戲類型獲取剩下的。。 我的代碼是這樣寫的: switch (i)?{???? case 0:?????? List<Tag> temp1 = new List<Tag>(templist).FindAll(temp => temp.TagID == list[i]);??????? for (int j = 0; j < temp1.Count && j < 9; j++)??????????? if (!gameids.Contains(temp1[j].ObjectID) && temp1[j].ObjectID!=ObjectID)??????????????????????? gameids.Add(temp1[j].ObjectID);??????????????????????? break;????? case 1:????? ? List<Tag> temp2 = new List<Tag>(templist).FindAll(temp => temp.TagID == list[i]);??????????????????????? for (int j = 0; j < temp2.Count && j < 3; j++)??????????????????????? if (!gameids.Contains(temp2[j].ObjectID) && temp2[j].ObjectID != ObjectID)???????????????????????? gameids.Add(temp2[j].ObjectID);??????????????????????? break;?????? case 2:??????? List<Tag> temp3 = new List<Tag>(templist).FindAll(temp => temp.TagID == list[i]);???????????????????????? for (int j = 0; j < temp3.Count && j < 3; j++)???????????????????????? if (!gameids.Contains(temp3[j].ObjectID) && temp3[j].ObjectID != ObjectID)??????????????????????????????? gameids.Add(temp3[j].ObjectID);??????????????????????? break;??????????????? } ? 但效率不高 請問有什么好的優化方法 謝謝了
查看完整描述

1 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

? 看了下你的代碼,你多次從同一個templist中做查詢,效率自然不高,因為你會對templist做多次的循環,還不如在一次循環中把你要做的事都做完,也就是盡量讓templist中的每個元素只被訪問一次,這種技術經常使用,比如排序.類似如下;

foreach(Tag tag in templist)

{

? 把你的業務邏輯都寫在這里,可能需要中間臨時變量和臨時的List<Tag>
}

查看完整回答
反對 回復 2019-01-21
  • 1 回答
  • 0 關注
  • 379 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號