首页 > 解决方案 > LAZY 中的缓慢枚举

问题描述

ic = new ImapClient("imap.yandex.com", Email, email.Password, AuthMethods.Login, 993, true);
var mailMessage = ic.SearchMessages(SearchCondition.From("somemail@gmail.com"), false, true).ToList();

if (mailMessage.Count > 0)
{
    foreach (Lazy<AE.Net.Mail.MailMessage> Lmail in mailMessage)
    {
        AE.Net.Mail.MailMessage mail = Lmail.Value;
        //SendSmtpMail(mail.Subject, ReplyData, Email, Password, mail.From,mail.MessageID);
        if (mail != null)
        {
            if (mail.To.FirstOrDefault(x => x.Equals(email.EmailName)) != null)
            {
                if (mail.Body.IndexOf("Attachment Name:", StringComparison.OrdinalIgnoreCase) > -1)
                {
                    Code= Between(mail.Body, "to:", "\r");
                }
                else
                {
                    _msg.Add("CODE NOT FOUND..." + Environment.NewLine);
                }
            }
        }
    }
}

我正在使用 nuget 的 AE Mail 插件。问题是,以下行:

AE.Net.Mail.MailMessage mail = Lmail.Value; 

惰性枚举花费了将近 1 秒。这在解析大量邮件时非常麻烦。有什么建议么?

标签: c#lazy-sequences

解决方案


推荐阅读