的GroupBy没有LINQ
我试图实现无LINQ如下:的GroupBy没有LINQ
我有CenterDetail对象(与CenterID和areaID表示财产)的列表:
- objCenterDetail1(CenterID = 1,areaID表示= 1)
- objCenterDetail2(CenterID = 2,areaID表示= 1)
- objCenterDetail3(CenterID = 3,areaID表示= 1)
- objCenterDetail4(CenterID = 5,areaID表示= 2)
- objCenterDetail5(CenterID = 6,areaID表示= 2)
我想创建一个AreasDictionary如下:
- areaID表示= 1:objCenterDetail1,objCenterDetail2,objCenterDetail3
- areaID表示= 2:objCenterDetail4 ,objCenterDetail5
在C#中使用.NET 2.0的最佳解决方案是什么?
你可能想是这样的:
Dictionary<int, List<CenterDetail>> map = new Dictionary<int, List<CenterDetail>>();
foreach (CenterDetail detail in details)
{
List<CenterDetail> list;
if (!map.TryGetValue(detail.AreaID, out list)
{
list = new List<CenterDetail>();
map.Add(detail.AreaID, list);
}
list.Add(detail);
}
return map;
由于海报提到了.NET 2.0,只要确保将上述示例中的var语句替换为实际类型。 – 2010-07-15 17:05:32
@Ben - Opps。我猜想习惯的力量。 – ChaosPandion 2010-07-15 17:06:35
'var'与.NET 2.0一起作为目标平台 - 如果您使用.NET 3.5编译器;-) – 2010-07-15 17:07:41
不使用LINQ通常意味着使用foreach来对您的集合,而不是:
IEnumerable<Center> centers = // Assume this is your collection;
Dictionary<Area,List<Center>> areasDictionary = new Dictionary<Area,List<Center>>();
foreach(Center center in centers)
{
if (!areasDictionary.ContainsKey(center.Area))
areasDictionary.Add(center.Area, new List<Center>());
areasDictionary[center.Area].Add(center);
}
现在,这可能不会在您的解决方案,因为编译你没有给我们足够的有关特定类型的信息,但它确实证明了总体思路。
... wha?你可能想考虑一个更好的例子,因为截至目前,这个问题没有意义。 – 2010-07-15 16:58:47
您可以在.NET 2.0中使用LINQ:http://www.albahari.com/nutshell/linqbridge.aspx – TrueWill 2010-07-15 17:11:10