我在代码中创建了 2 个列表。一个包含一长串员工的名字和姓氏,后跟他们的索引:
public List<Employee> FindTestEmployees()
{
var results = SubmitQuery($@"(Select distinct(E.Badge_Sys_No), E.Emp_Id, E.Last_Nm, E.First_Nm,e.emp_job_func_cd
From Employee E, Employee_Job_Func Ef, Emp_Job_Function_Group_Asgnmt Ejfga
Where .....");
var EmployeeList = new List<Employee>();
for (var i = 0; i < results.Rows.Count; i++)
{
var employee = new Employee();
employee.FirstName = results.Rows[i][3].ToString();
employee.LastName = results.Rows[i][2].ToString();
employee.Index = i;
EmployeeList.Add(employee);
EmployeeList.Add(employee);
}
return EmployeeList;
}
第二个是以前为他们生成报告的员工的简短列表。此列表仅包含员工的名字和姓氏:
public List<Employee> FindIPCREmployees()
{
var results = SubmitQuery($@"(Select E.first_nm, e.last_nm, Ejfga.Emp_Job_Function_Group_Cd,
e.emp_job_func_cd
From Interaction I, Interaction_Activity Ia, Appointment A, Branch B,
Employee E, Employee_Job_Func Ef, Emp_Job_Function_Group_Asgnmt Ejfga
Where .....)");
var IPCREmployeesList = new List<Employee>();
for (var i = 0; i < results.Rows.Count; i++)
{
var employee = new Employee();
employee.FirstName = results.Rows[i][0].ToString();
employee.LastName = results.Rows[i][1].ToString();
IPCREmployeesList.Add(employee);
}
return IPCREmployeesList;
}
我正在尝试做的是创建第三个列表,该列表将包含第二个列表中员工的名字和姓氏以及第一个列表中该特定员工的索引。重要的部分是按员工姓名在列表之间的链接。有没有办法在 .NET 中执行此操作?如果是这样,我将非常感谢您的帮助。
假设我正在正确创建您要查找的最终列表:
var employeeList = FindTestEmployees();
var secondList = FindIPCREmployees();
var finalList = employeeList.Join(secondList, a => new {a.FirstName, a.LastName}, b => {b.FirstName, b.LastName}, (a,b) => a);
在这种情况下finalList
将是第一个列表中的 Employee 对象的集合,这些对象在第二个列表中具有匹配的名字和姓氏的条目。 我建议与 LINQ 成为好朋友,如果 .NET 是您消磨时间的地方。
你需要一个Dictionary<Employee,int>
:
Dictionary<Employee,int> dict=new Dictionary<Employee,int>();
foreach (var employee in IPCREmployeesList)
{
dict.Add(employee,EmployeeList.IndexOf(employee));
}