如何简化这个以便搜索花费更少的时间?
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";
}
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";
}