【发布时间】:2012-02-08 15:56:37
【问题描述】:
我编写了一个方法,它采用一组项目(价格项目 - 每个项目都有一个数量和一个代码)并按代码对它们进行分组,然后返回一个 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> 的字典。
有人可以告诉我如何正确重构我对这种方法的第一次尝试吗?感觉有更简洁的写法但是想不通!
【问题讨论】:
标签: c# .net linq refactoring