的GroupBy没有LINQ

的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的最佳解决方案是什么?

+1

... wha?你可能想考虑一个更好的例子,因为截至目前,这个问题没有意义。 – 2010-07-15 16:58:47

+2

您可以在.NET 2.0中使用LINQ:http://www.albahari.com/nutshell/linqbridge.aspx – TrueWill 2010-07-15 17:11:10

你可能想是这样的:

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; 
+0

由于海报提到了.NET 2.0,只要确保将上述示例中的var语句替换为实际类型。 – 2010-07-15 17:05:32

+0

@Ben - Opps。我猜想习惯的力量。 – ChaosPandion 2010-07-15 17:06:35

+3

'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); 
} 

现在,这可能不会在您的解决方案,因为编译你没有给我们足够的有关特定类型的信息,但它确实证明了总体思路。