首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请教List<T>怎么分组

2012-09-17 
请问ListT如何分组?ListStudent student new ListStudent()以上是我自定义的一个泛型学生类,包含

请问List<T>如何分组?
List<Student> student = new List<Student>();

以上是我自定义的一个泛型学生类,包含“姓名”、“年龄”、“班级”、“学号”等属性,现在要按照某一个属性对其进行分组,

例如:student 中有10条记录,现在要按照班级分类,其中第1、2条是同一班级、第3、4条是同一班级、第5、6、7条是同一班级、第8、9、10条是同一班级,我需要把它分成4组,并得到分组以后的List,然后循环它,去执行后面的操作,请问这个分组的方法应该怎么写?

[解决办法]

C# code
List<Student> testStr = new List<Student>();            //添加testStr 元素            IEnumerable<IGrouping<string, Student>> query = testStr.GroupBy(x => x.班级);            foreach (IGrouping<string, Student> info in query)            {                List<Student> sl = info.ToList<Student>();//分组后的集合                foreach (Student item in sl)                {                                    }            }
[解决办法]
2.0就用Dictionary
我写了个小DEMO,你看一下

C# code
class Program    {        static void Main(string[] args)        {            List<Student> list = new List<Student>()           {           new Student{Name="aaa",ClassName="a",Age=20,StuNo="a001"},           new Student{Name="bbb",ClassName="a",Age=18,StuNo="a003"},           new Student{Name="ccc",ClassName="b",Age=20,StuNo="b001"},           new Student{Name="ddd",ClassName="b",Age=20,StuNo="b045"},           new Student{Name="eee",ClassName="c",Age=20,StuNo="c001"},           new Student{Name="fff",ClassName="c",Age=20,StuNo="c008"},           new Student{Name="ggg",ClassName="c",Age=20,StuNo="c050"},           new Student{Name="hhh",ClassName="c",Age=20,StuNo="c007"}           };            Dictionary<string, List<Student>> stuGroup = new Dictionary<string, List<Student>>();                        foreach (Student item in list)            {                if (!stuGroup.Keys.Contains(item.ClassName))                {                    stuGroup.Add(item.ClassName, new List<Student>());                }                stuGroup[item.ClassName].Add(item);            }            foreach (KeyValuePair<string,List<Student>> item in stuGroup)            {                Console.WriteLine("班级:"+item.Key);                foreach (Student stu in item.Value)                {                    Console.WriteLine("姓名:" + stu.Name + "\t班级:" + stu.ClassName + "\t年龄:" + stu.Age + "\t学号:" + stu.StuNo);                }            }            Console.Read();        }    }    class Student    {        public string Name { get; set; }        public string ClassName { get; set; }        public int Age { get; set; }        public string StuNo { get; set; }    } 

热点排行