各位大俠幫幫忙
我寫了個邏輯根據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>
}
- 1 回答
- 0 關注
- 379 瀏覽
添加回答
舉報
0/150
提交
取消