请问List如何分组?

铁血男儿007 2012-08-29 02:46:04
List<Student> student = new List<Student>();

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

例如:student 中有10条记录,现在要按照班级分类,其中第1、2条是同一班级、第3、4条是同一班级、第5、6、7条是同一班级、第8、9、10条是同一班级,我需要把它分成4组,并得到分组以后的List,然后循环它,去执行后面的操作,请问这个分组的方法应该怎么写?
...全文
5355 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
愚知 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 8 楼 的回复:
引用 7 楼 的回复:

引用 6 楼 的回复:
引用 5 楼 的回复:
请问x是什么东西?是从哪儿……

百度一下lambda表达式

Lambda表达式是.net3.0中的新特性,我用的是.net2.0,怎么办?

用3.0的frame

请问具体怎么用啊?
[/Quote]
右键-> properties-> frame 选择为4.0
bigbaldy 2012-08-29
  • 打赏
  • 举报
回复
分组并打印:

(from student in students group student by student.age into g select g).ToList().ForEach(g =>
{
richTextBox1.Text += g.Key + "\n";
foreach (Student stu in g)
{
richTextBox1.Text += stu.name + "," + stu.age + "," + stu.grade + "," + stu.number + "\n";
}
});
ohkuy 2012-08-29
  • 打赏
  • 举报
回复
2.0就用Dictionary
我写了个小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
铁血男儿007 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
现在都4.5了,你还不快更新
[/Quote]
客观原因,暂时更新不了,请问还有没有什么其它方法啊?
E次奥 2012-08-29
  • 打赏
  • 举报
回复
现在都4.5了,你还不快更新
铁血男儿007 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 7 楼 的回复:

引用 6 楼 的回复:
引用 5 楼 的回复:
请问x是什么东西?是从哪儿……

百度一下lambda表达式

Lambda表达式是.net3.0中的新特性,我用的是.net2.0,怎么办?

用3.0的frame
[/Quote]
请问具体怎么用啊?
愚知 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 6 楼 的回复:
引用 5 楼 的回复:
请问x是什么东西?是从哪儿……

百度一下lambda表达式

Lambda表达式是.net3.0中的新特性,我用的是.net2.0,怎么办?
[/Quote]
用3.0的frame
铁血男儿007 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
引用 5 楼 的回复:
请问x是什么东西?是从哪儿……

百度一下lambda表达式
[/Quote]
Lambda表达式是.net3.0中的新特性,我用的是.net2.0,怎么办?
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
请问x是什么东西?是从哪儿……
[/Quote]
百度一下lambda表达式
铁血男儿007 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
C# code
List<Student> testStr = new List<Student>();
//添加testStr 元素
IEnumerable<IGrouping<string, Student>> query = testStr.GroupBy(x => x.班级);
foreach (IGroupi……
[/Quote]

请问x是什么东西?是从哪儿来的?
seominho 2012-08-29
  • 打赏
  • 举报
回复
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)
{

}
}
--茶-- 2012-08-29
  • 打赏
  • 举报
回复
.net链表的功能在LINQ之后功能扩大了不少,可以和数据表一样操作了。
c2606050113 2012-08-29
  • 打赏
  • 举报
回复
student.GroupBy(x=>x.Name)
[Quote=引用 1 楼 的回复:]

student.GroupBy(x=>x.age)
[/Quote]
bdmh 2012-08-29
  • 打赏
  • 举报
回复
student.GroupBy(x=>x.age)
建议采用的顺序是 ListListList ListList、1^这三者都可以容纳所有的对象,但使用的顺序应该是首选List,次之List,最后选择List,原因如下: (1) List是确定的某一个类型 List表示的是List集合中的元素都为T类型,具体类型在运行期决定;List表示 的是任意类型,与List类似,而List则表示List集合中的所有元素为Object类 型,因为Object是所有类的父类,所以LiSt也可以容纳所

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧