c#合并两个字典并在它们之间添加值
本文关键字:之间 添加 字典 合并 两个 | 更新日期: 2023-09-27 18:10:28
我正在学习c#,需要合并两个字典,这样我就可以在两个字典中添加值。
第一个字典是payePlusNssf,它保存每个键的值(键表示员工ID)。到目前为止,我有员工1、2、3、4和5
Dictionary<int, decimal> payePlusNssf = new Dictionary<int, decimal>();
paye.ToList().ForEach(x =>
{
var deductNSSF = x.Value + nssfAmount;
payePlusNssf.Add(x.Key, deductNSSF);
});
第二个字典是nhifRatesDictionary,它保存了第一个字典中每个员工的每个值的加成率。
Dictionary<int, IEnumerable<NHIFRates>> nhifRatesDictionary =
new Dictionary<int, IEnumerable<NHIFRates>>();
basicPayDictionary.ToList().ForEach(x =>
{
List<NHIFRates> nhifValueList = new List<NHIFRates>();
// Using Employee basic pay
decimal basicPay = x.Value;
bool foundflag = false;
foreach (var item in nhifBracketList)
{
if (basicPay >= item.Min && basicPay <= item.Max)
{
nhifValueList.Add(new NHIFRates { Rate = item.Rate });
foundflag = true;
break;
}
}
if (!foundflag)
{
nhifValueList.Add(new NHIFRates { Rate = 0m });
}
nhifRatesDictionary.Add(x.Key, nhifValueList);
});
struct NHIFRates
{
public decimal Rate { get; set; }
}
总而言之,我需要在合并和添加后:
Dict 1 Dict 2 Result Dict 3
key value key rate key value
1 500 1 80 1 580
2 1000 2 100 2 1100
3 2000 3 220 3 2220
4 800 4 300 4 1100
5 1000 5 100 5 1100
我如何做到这一点?我在这个网站上看到了过去类似的问题,但对我来说不是很有帮助。
未测试,但请尝试:
payePlusNssf.ToDictionary(
v => v.Key,
v => v.Value + nhifRatesDictionary[v.Key].Sum(nhifr => nhifr.Rate)
);
这假设由于nhifRatesDictionary
的值是IEnumreable,您想要对枚举中的所有值求和。如果IEnumerable为空,这也应该工作。如果您知道每个键只有一个值,那么您可以使用:
payePlusNssf.ToDictionary(
v => v.Key,
v => v.Value + nhifRatesDictionary[v.Key].Single(nhifr => nhifr.Rate)
);
一个简单的for循环怎么样?
Dictionary<int,decimal> d3 = new Dictionary<int,decimal>();
for (int i = 1,i<=payePlusNssf.Count,i++)
{
d3.Add (i,payePlusNssf[i]+((nhifRatesDictionary[i])[0]).Rate);
}
如果ID号不能保证这么简单,你可以使用
foreach (var x in payePlusNssf)
{
d3.Add(x.Key,x.Value+ ((nhifRatesDictionary[x.Key])[0]).Rate);
}
或者完全不同,不要保持三个保证具有相同键的独立字典,并创建一个像
这样的雇员类class Employee
{
public decimal payePlusNssf;
public decimal nhifRate;
public decimal Sum
{
get { return payePlusNssf + nhifRate ;}
}
}
和有一个字典的一切-节省你的问题,保持所有的字典更新