我有以下代码需要较长的时间来执行。有什么替代方案可以用LINQ或其他任何方式替代下面的代码来提高性能?替换嵌套的foreach以提高性能
var usedLists = new HashSet<long>();
foreach (var test in Tests)
{
var requiredLists = this.GetLists(test.test, selectedTag);
foreach (var List in requiredLists)
{
if (!usedLists.Contains(List.Id))
{
usedLists.Add(List.Id);
var toRecipients = List.RecepientsTo;
var ccRecipients = List.RecipientsCC;
var bccRecipients = List.RecipientsBCC;
var replyTo = new List<string>() { List.ReplyTo };
var mailMode = isPreviewMode ? MailMode.Display : MailMode.Drafts;
OutlookModel.Instance.CreateEmail(toRecipients, ccRecipients, bccRecipients, this.Draft, mailMode, replyTo);
}
}
}
我怀疑你会用linq更快地获得它,我怀疑'CreateEmail'函数总是占用所有的时间。剖析你的代码,看看真正的瓶颈在哪里。 http://stackoverflow.com/questions/3927/what-are-some-good-net-profilers – Stormenet
不,那基本上是最好的。 – TheGeekZn
你的'this.GetLists'方法呢?除了这两种方法之外,没有什么东西可能会在代码中消耗太多。或者,如果这不符合你需要做的事情(因为你总是发送相同的草稿),你可能会立即发送一个分组邮件 – mmg666