根据属性对对象进行分组和计数

时间:2009-06-18 22:28:51

标签: .net vb.net visual-studio-2008

我需要迭代一组对象。根据对象的属性值,我需要将对象组合在一起。我还需要每个离散属性值的总计数。我不知道会有多少组,每组可能有1到n个对象。

我该怎么做?有没有algortihms可以帮我解决这个问题? Psuedocode或引用很好。

非常感谢!

2 个答案:

答案 0 :(得分:2)

查看101 LINQ Samples - 具体在Group By Sample

答案 1 :(得分:0)

以下是一些可能对您有帮助的代码。它通过属性A将Target实例分组到组中,然后遍历分组并打印组的计数......

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace IterateCollection
{
    class Program
    {
        static void Main(string[] args)
        {
            var lst = new List<Target>() { new Target() { A=1, B=1 },
                                           new Target() { A=1, B=2 },
                                           new Target() { A=2, B=1 },
                                           new Target() { A=2, B=2 },
                                           new Target() { A=3, B=1 } };

            var grp = lst.GroupBy(t => t.A);
            var dic = grp.ToDictionary(g => g.Key);

            List<int> res = null;

            foreach (var key in dic.Keys )
            {
                res = dic[key].Select(t => t.A).ToList();

                Console.WriteLine("Number of {0} is {1}", key, res.Count);
            }


            Console.ReadLine();
        }
    }

    public class Target
    {
        public int A { get; set; }
        public int B { get; set; }
    }
}