我在代码中创建了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中这样做?如果是这样,我真的很感激帮助。
答案 0 :(得分:0)
我相信你需要一个Dictionary<Employee,int>
:
Dictionary<Employee,int> dict=new Dictionary<Employee,int>();
foreach (var employee in IPCREmployeesList)
{
dict.Add(employee,EmployeeList.IndexOf(employee));
}
答案 1 :(得分:0)
假设我正在创建您正在寻找的最终列表:
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对象的集合,这些对象在第二个列表中具有匹配的名字和姓氏的条目。如果.NET是您花费时间的地方,我建议成为LINQ的好朋友。