我有这样一个场景:字典A的key存储为-'employeeId,cardnumber'
key value
'Id47835,12345', 'Emma,9843675867,Park Street'
'Id47800,4444', 'Sam,981275337,New Street'
'Id47866,41234', 'Pam,9812123337,Old Street'
'Id47866,03434', 'Jim,9866623337,Old Street'
员工ID和卡号是唯一的。
我必须将一些值与上面的字典进行比较。我将从一个.csv文件中阅读这些值。比较条件如下。
CSV文件:
EmpID CardNumber Name Phone Address
Id47835 12345 Emma 9843675867 Park Street ---- this user is present in dict A - same emp Id and same card number
Id47800 8888 Sam 981275337 New Street ----- this user is present in dict A - same emp Id and different card number
Id33333 41234 Pam 9812123337 Old Street ----- this user is present in dict A - different emp Id and same card number
ID94899 3434 Jim 9812123337 Old Street ---- this user is not present in dict A - different emp Id and different card number - leading zeroes are considered different.
目前,我正在执行以下操作:
Check if any part of a hashtable value contains certain string c#
C# - Partial Search in Hashtables
if (dictA.Keys.Cast<string>().Any(k => k.Contains(employeeID) || k.Contains(cardnumber)))
//then do something
使用这种方法,我可以检查上面提到的所有3个条件,但我的最后一个条件是失败(前导零)
当我比较卡号3434和03434时,结果为true,当然,因为我使用的是contains
,而03434包含3434。
除了部分搜索词典,他们还有别的选择吗?
1条答案
按热度按时间nhaq1z211#
可能有更有效的解决方案,但您的问题可以通过执行以下操作来解决:
不过,对数据进行预处理要比每次搜索都要对数据进行拆分和比较好得多。解决方案假定键的格式始终为'{id},{cardNumber}',不包含空格、尾随空格等。