我的类定义如下:
public class CoinRepository
{
private Dictionary<Coin, int> repository;
public CoinRepository()
{
repository = new Dictionary<Coin, int>();
}
public void Add(List<Coin> coins)
{
foreach (var coin in coins)
{
repository[coin] = repository.ContainsKey(coin) ? repository[coin] + 1 : 1;
}
}
}
public class Coin
{
public int CoinValue { get; set; }
//Has equals, hascode etc implemented. Omitted here for brevity.
}
我的 add 方法将被多次调用,我希望通过 LINQ 查询缩短 foreach 循环。
基本上我需要做的是将所有硬币按其硬币价值分组,然后添加到存储库中。但是,在这样做的同时,我需要与已经存在的那些合并。如何使用 LINQ 实现这一目标?
例如:假设我在存储库中有 2 个硬币,价值 1 和 2 可用,并且我收到另一个按值 1,2 和 3 添加硬币的请求,那么我的存储库现在将有 3 种类型的硬币。价值 1 的硬币计数 2,价值 2 的硬币计数 2,价值 3 的硬币计数 1。
谢谢,-迈克
使用 .NET 3.5