List<Student> student = new List<Student>();以上是我自定义的一个泛型学生类,包含“姓名”、“年龄”、“班级”、“学号”等属性,现在要按照某一个属性对其进行分组,例如:student 中有10条记录,现在要按照班级分类,其中第1、2条是同一班级、第3、4条是同一班级、第5、6、7条是同一班级、第8、9、10条是同一班级,我需要把它分成4组,并得到分组以后的List,然后循环它,去执行后面的操作,请问这个分组的方法应该怎么写?
调试欢乐多
//添加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)
{
}
}
我写了个小DEMO,你看一下
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; } }输出:
班级:a
姓名:aaa 班级:a 年龄:20 学号:a001
姓名:bbb 班级:a 年龄:18 学号:a003
班级:b
姓名:ccc 班级:b 年龄:20 学号:b001
姓名:ddd 班级:b 年龄:20 学号:b045
班级:c
姓名:eee 班级:c 年龄:20 学号:c001
姓名:fff 班级:c 年龄:20 学号:c008
姓名:ggg 班级:c 年龄:20 学号:c050
姓名:hhh 班级:c 年龄:20 学号:c007
{
richTextBox1.Text += g.Key + "\n";
foreach (Student stu in g)
{
richTextBox1.Text += stu.name + "," + stu.age + "," + stu.grade + "," + stu.number + "\n";
}
});