次のように定義されたクラスがあります。
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 メソッドが複数回呼び出されるので、その foreach ループを LINQ クエリで短縮したいと考えています。
基本的に私がする必要があるのは、すべてのコインをそのコイン値でグループ化し、リポジトリに追加することです。ただし、それを行っている間、既に存在するものとマージする必要があります。LINQ を使用してこれを達成するにはどうすればよいですか?
例: リポジトリで利用可能な値 1 と 2 の 2 つのコインがあり、値 1、2、および 3 でコインの別の追加要求を受け取った場合、リポジトリには 3 種類のコインがあります。カウント 2 で値 1 のコイン、カウント 2 で値 2 のコイン、カウント 1 で値 3 のコイン。
ありがとう -マイク
.NET 3.5 の使用