0

行からエラーが発生しました

Dictionary<int, string> viewBusinesAndCountLeft = grptemp.Take(4).ToDictionary(x => x.Count, x => x.BusinessCategoryName);

エラー:「同じキーを持つ要素はすでに追加されています。」

これを行う方法?

var grptemp = (from adsBusines in m_adsRepository.SaleBusinesAds
               group adsBusines by adsBusines.BusinessCategory.Name
               into grp
               select new
               {
                  BusinessCategoryName = grp.Key,
                  Count = grp.Select(x => x.BusinessCategory.ChildItems.Count()).Distinct().Count()
               }).Take(8);

Dictionary<int, string> viewBusinesAndCountLeft = grptemp.Take(4).ToDictionary(x => x.Count, x => x.BusinessCategoryName);
Dictionary<int, string> viewBusinesAndCountRigth = grptemp.Skip(4).Take(4).ToDictionary(x => x.Count, x => x.BusinessCategoryName);
4

2 に答える 2

1

辞書のキーとしてカウントを使用しています。つまり、同じカウントの2つのカテゴリが見つかった場合は、必ずその例外がスローされます。

あなたが正しくやろうとしていることを私が理解しているなら、あなたは辞書への鍵として「ビジネスカテゴリ」を持ち、値としてカウントを持っているべきです。

例えば

Dictionary<string, int> viewBusinesAndCountLeft = grptemp.Take(4).ToDictionary(x => x.BusinessCategoryName, x => x.Count);
于 2012-04-12T06:47:49.443 に答える
0

宣言とDictionary<T,U>は、タイプT(この場合はint)のキーを持つ辞書を意味し、辞書内のキーは一意である必要があります。

おそらく、キーを文字列にし、値をカウントにする必要があります。引数を切り替えてみてください:

Dictionary<string, int> viewBusinesAndCountLeft = 
    grptemp.Take(4).ToDictionary(x => x.BusinessCategoryName, x => x.Count);
于 2012-04-12T06:48:44.947 に答える