我有两个.csv文件-
文件1-
EmployeeId Username BranchId NewJoinee EmpType AccessDetails
5543101 abc.username 40000 0 64 60060||60060
5543102 someone.username 40000 0 64 52474||52474
5543103 ABC.someone 40000 0 NULL NULL
5543104 XZ.someone 40000 0 64 pppA082||
访问权限详细信息“列包含的详细信息为"CardNumber|分泌素|标记编号
File 2也是如此
EmployeeId Username BranchId NewJoinee EmpType AccessDetails
5000101 abc.username 40500 0 64 5555||60060
5000102 someone.username 40500 0 64 52474||1234
5000103 ABC.someone 40500 0 NULL NULL
5000104 XZ.someone 40500 0 64 10A082||5644
我要对比这两份文件,我的条件是-
- 如果卡号匹配但令牌ID不匹配,则不执行任何操作
- 如果卡号不匹配但令牌ID匹配,则不执行任何操作
- 如果访问详细信息为空,则将此员工详细信息打印到另一个文件
- 如果卡号和令牌ID不匹配,则将此员工详细信息打印到另一个文件
我现在正在做这个,但是使用这个方法我只能实现第一个条件。我使用哈希表来存储文件的内容。我把卡号作为键,其余的细节作为值。
这就是我存储File 1的值的方式
if (!_File1.ContainsKey(cardnumber))
_File1.Add(cardnumber, username + "," + branchId + "," + employeeID + "," + cardnumber + "," + tokennumber + "," + empType + "," + newJoinee);
以类似的方式,我将file 2的内容存储在另一个哈希表中,然后执行以下操作来读取file 2的数据并进行比较
//readingFile2 data
row = SplitCSV(line);
employeeID = row[employeeIndex].Trim().ToString();
username = row[UsernameIndex].Trim().ToString();
branchID = row[branchIdIndex].Trim().ToString();
newJoinee = row[njIndex].Trim().ToString();
emptype = row[emptypeIdIndex].Trim().ToString();
accessdetails = row[ValueIndex].Trim().ToString();
if (!accessdetails.Equals("NULL"))
{
string[] values = value.Split('|');
cardnumberfile2 = values[0];
tokenumberFile2 = values[2];
}
else
{
cardnumberfile2 = employeeID;
tokennumberfile2 = "";
}
if(_file1.ContainsKey(cardnumberfile2))
{
//reading values from File1
// As cardnumber in file2 is present in the file1, then do nothing
}
我在想也许我应该把钥匙
key = cardnumber+tokennumber
然后可能执行一些操作,搜索令牌ID或卡号是否存在于此密钥中。因为在上述方法中,我可以测试卡号是否存在,因为它是两个文件中的密钥,但如果卡号不同,令牌编号相同(示例表中的第1行),此方法将失败
其次,我不知道如何处理空值列,因为这些记录没有唯一的链接值。
另外,我不拥有这些数据。我不能改变它。
1条答案
按热度按时间wvmv3b1j1#
可能有2个Map。数据结构可能如下所示: