C# C比较两个列表,检查工资单流程是否正确(验证)
我正在学习C语言,正在为SAP Business One制作工资单附加模块 我已经完成了计算净工资、总工资、付款人、收入、扣除额等的工资单流程。每个员工的这些计算都输入到临时流程数据表中 我现在想做一个每月滚动关闭本月。为此,我必须进行一些验证,以确保在将临时流程数据表中的内容删除为永久数据表之前,计算已正确完成 我想通过比较两个列表来实现这一点 第一个来自SAP中的员工主数据,它包含员工ID、姓名、电话、薪资单位等。我只选择了员工ID 第二个是从流程数据中提取的,它包含员工ID、净工资U\U PD\U代码=SYS001等 我希望通过确保第1个列表中的所有EMPID都准确地包含在第2个列表中,并且第2个列表中的净薪酬不为null(即U_PD_code,其中==SYS001不为null或为空等)来匹配此列表 我想根据工资单位做三个比较,即每月=M,半每月=S和每周=W。 现在我对月刊感兴趣 现场薪资单位位于员工主数据中,但不在流程数据临时表中,因此我不确定如何在临时表中获得月薪上的不同EMPID,以便进行比较。我首先比较每个月的员工 处理\u数据\u临时字段 如何做到这一点 到目前为止我的代码 注意:过程数据临时表包含所有员工的计算,无论是每月、半每月还是每周 我希望我足够清楚假设employeeIDList和tempList都是整数列表,您可以使用它们查找两个列表中的元素C# C比较两个列表,检查工资单流程是否正确(验证),c#,C#,我正在学习C语言,正在为SAP Business One制作工资单附加模块 我已经完成了计算净工资、总工资、付款人、收入、扣除额等的工资单流程。每个员工的这些计算都输入到临时流程数据表中 我现在想做一个每月滚动关闭本月。为此,我必须进行一些验证,以确保在将临时流程数据表中的内容删除为永久数据表之前,计算已正确完成 我想通过比较两个列表来实现这一点 第一个来自SAP中的员工主数据,它包含员工ID、姓名、电话、薪资单位等。我只选择了员工ID 第二个是从流程数据中提取的,它包含员工ID、净工资U\U
int[] id1 = { 44, 26, 92, 30, 71, 38 };
int[] id2 = { 39, 59, 83, 47, 26, 4, 30 };
IEnumerable<int> both = id1.Intersect(id2);
如果输出列表的长度与输入列表的长度相同,则它们是相同的
但是,首先检查两个列表的长度是否相同。如果没有,那么这个过程就失败了。仅当两个列表的长度相同时才执行相交检查
还有一种方法是:
通过使用默认相等比较器比较值,生成两个序列的集合差
谢谢你的意见。这将如何在比较前获得第二个列表中关于月薪的感兴趣的EMPID?是否加入第二个查询?@KinyanjuiKamau-是的,您可能需要第二个查询。根据您使用的主列表,这将告诉您哪些员工不在tempList中。
private void DoMonthEndRollover()
{
// Get service instances needed
var getAllEmployees = Program.Kernel.Get<IEmployeeService>().GetAllEmployees().Where(x => x.salaryUnit.ToString() == "M");
var tempProcessData = Program.Kernel.Get<IProcessDataTempService>().GetAllProcessDataTemps();
// Get all employee IDs from first list
var employeeIdList = (from el in getAllEmployees select el.empID).Distinct();
// Get information from second list
var tempList = (from tl in tempProcessData orderby tl.U_Employee_ID select tl).Distinct(); ......not finished
// Check if all Employee IDs have net pay (Contained in Process Data Temporary table)
}
int[] id1 = { 44, 26, 92, 30, 71, 38 };
int[] id2 = { 39, 59, 83, 47, 26, 4, 30 };
IEnumerable<int> both = id1.Intersect(id2);