Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C比较两个列表,检查工资单流程是否正确(验证)_C# - Fatal编程技术网

C# C比较两个列表,检查工资单流程是否正确(验证)

C# C比较两个列表,检查工资单流程是否正确(验证),c#,C#,我正在学习C语言,正在为SAP Business One制作工资单附加模块 我已经完成了计算净工资、总工资、付款人、收入、扣除额等的工资单流程。每个员工的这些计算都输入到临时流程数据表中 我现在想做一个每月滚动关闭本月。为此,我必须进行一些验证,以确保在将临时流程数据表中的内容删除为永久数据表之前,计算已正确完成 我想通过比较两个列表来实现这一点 第一个来自SAP中的员工主数据,它包含员工ID、姓名、电话、薪资单位等。我只选择了员工ID 第二个是从流程数据中提取的,它包含员工ID、净工资U\U

我正在学习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都是整数列表,您可以使用它们查找两个列表中的元素

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);