【发布时间】:2017-06-14 10:55:29
【问题描述】:
我有以下代码:
var keywordItems = adwordsService
.ParseReport(report)
.Where(e => e.Keyword.IndexOf('+') == -1);
var keywordTranslations = keywordTranslationService
.GetKeywordTranslationsByClient(id);
model.KeywordItems = keywordItems
.Where(e =>
{
int lastUnderscore = e.CampaignName.LastIndexOf('_');
var identifer = e.CampaignName.Substring(lastUnderscore + 1);
var translation = keywordTranslations
.FirstOrDefault(t => t.translation == e.Keyword &&
t.LocalCombination_id == identifer);
return translation == null;
})
.OrderBy(e => e.Keyword);
它接收一个数组,然后根据它们之前是否已经见过这些元素来过滤它们中的每一个。
但是,这运行起来很慢,因为有很多新元素,所以如果有人能指出我在这种情况下使用的最佳算法的正确方向,我会很高兴。
【问题讨论】:
-
您有两个不同的输入 -
keywordItems和keywordTranslations- 那么这里的n是什么? -
它们是两个大小大致相同的列表。