如何简化这个以便搜索花费更少的时间?

How to simplify this so that search takes less time?

string name = null;

foreach (var dealer in contact)
{
    if (name != null)
        break;
    if (name == null)
    {
        foreach (var emp in dealer.employees)
        {
            if (emp.id == primarySalespersonId)
            {
                if (emp.personFirstName != null)
                    name = emp.personFirstName;
                else
                    name = "No Name";
                break;
            }
        }
    }

有多个相同的 table 命名联系人。每个联系人 table 有多个经销商 table。我需要一种使用 LINQ 或任何其他更好的方法来简化此搜索的方法。请帮忙

您可以做的第一个优化是替换内部循环以通过 id 查找员工,例如

string name = null;
foreach (var dealer in contact)
{
   var emp= dealer.employees.Where(e=>e.Id == primarySalespersonId).FirstOrDefault();
   if (emp!= null)
   {
       if (emp.personFirstName != null)
            name = emp.personFirstName;
       else
            name = "No Name";
   }

   if (name != null)
       break;
}

更进一步,需要做一些假设。

当 table 有一个名为 'id 的列时,我认为这意味着该列是一个 unique 标识列。

如果联系人代表每个 经销商(而不是经销商的选择)并且如果每个员工都属于经销商,那么您应该能够直接查找 ID。

   var emp = employees.Where(e=>e.Id == primarySalespersonId).SingleOrDefault();
   if (emp != null)
   {
       if (emp.personFirstName != null)
            name = emp.personFirstName;
       else
            name = "No Name";
   }