我已经写了需要项目集合(价格的项目 - 每个项目都有一个量和代码)的方法,并通过代码然后返回一个IDictionary组在哪儿,关键是代码该项目和值是该集团与代码项目组的集合,并返回一个字典
这里的方法的实现(这是有道理的希望!):
public IDictionary<string, IEnumerable<PriceDetail>> GetGroupedPriceDetails(IEnumerable<PriceDetail> priceDetails)
{
// create a dictionary to return
var groupedPriceDetails = new Dictionary<string, IEnumerable<PriceDetail>>();
// group the price details by code
var grouping = priceDetails.GroupBy(priceDetail => priceDetail.Code);
// foreach grouping, add the code as key and collection as value to the dictionary
foreach (var group in grouping)
{
groupedPriceDetails.Add(group.Key, group);
}
// return the collection
return groupedPriceDetails;
}
我又试图重构这个使用ToDictionary像这样:
// group the price details by code and return
return priceDetails.GroupBy(priceDetail => priceDetail.Code)
.ToDictionary(group => group.Key, group => group);
我得到一个错误,当我尝试编译它说我不能从string, IGrouping<string, PriceDetail>
字典转换成string, IEnumerable<PriceDetail>
字典。
谁能告诉我如何正确地重构我在这个方法的第一次尝试?我觉得有一个更简洁的方式写它,但无法弄清楚!
我想收集返回的代码键,并且每个键的值应该是PriceDetails用于收集该代码 - 所以>。我可以用你的方法吗? –
2012-02-08 16:02:01
如果您只是为了搜索代码并获取集合而转换成字典,而无意进一步修改字典,那么ILookup就是一个更好的匹配。 – Wilhelm 2012-02-08 16:21:35
在我从这个方法返回后过程的下一个是通过收集迭代(所以,每个组),总结的详细价格该组的收集量。我在这里错过了什么吗?我可以用ILookup来做吗?或者,现在我正在写这篇文章,我想我应该返回一些代码作为关键字,然后是一个总和的数额,并用一种方法完成所有工作......非常感谢您的任何建议! – 2012-02-08 16:30:31