有没有其他方法可以避免Foreach循环?

pri*_*kar -7 c# optimization foreach

请查看以下代码

using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Employee> employeeCollection = new List<Employee>();
            for (int i = 1; i < 10; i++) employeeCollection.Add(new Employee {
                EmployeeID = i, 
                EmployeeName = string.Concat("Employee", i),
                Email = string.Concat("Email", i) });


            //loop thru every record
            foreach (Employee e in employeeCollection)
            {
                SendEMail(e);
            }
        }

        private static void SendEMail(Employee employee)
        {
            // do something
        }        

    }


    class Employee
    {
        public int EmployeeID { get; set; }
        public string EmployeeName { get; set; }
        public string Email { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我必须对Employee的每条记录进行一些操作.从此以后,我正在使用foreach循环.如果记录数增加,操作次数将同样增加.所以它将是O(N).有没有更好的方法呢?

NB~我不是在寻找.foreach()

Lua*_*aan 5

不要打扰O(N).对于现实生活中的表现,简单的算法复杂性很少是一个很好的答案.昂贵的部分没有迭代员工名单,而是发送电子邮件.

如果您的要求允许,您可以使用包含多个收件人的单个电子邮件,例如 - 当然,这仅在所有电子邮件都相同的情况下才有效.否则,在某种程度上,您只需发送n个单独的电子邮件.

当然,即便如此,仍然有很多方法可以提高感知性能.您可以一次排队所有电子邮件,并向队列中显示他们正在等待的用户,而不是阻止UI.您可以并行发送每封电子邮件.您可以将电子邮件发送到其他服务(例如Microsoft Exchange)以处理实际发送给您.

但最后,如果您要发送100封不同的电子邮件,则必须发送100封电子邮件.没有聪明的算法会帮助你.