我有一个Studen类型,有5个字段,num,name,birth,idcard,classId,我们一般写Linq查询的时候就是这样写 List<Student> stus = from Student s in dc.Student select s; 那么其实我只想用其中的两个字段num,name,我就需要写一个dto StudentDto: num,name List<Student> stus = from Student s in dc.Student select newStudentDto { Num = s.Num, Name = s.Name }; 我们注意到classId属于外键,表示一种关系。这个字段的存在,使我们在序列化这个列表对象时(ajax操作时拿到json数据),会报错——序列化XXX对象时检测到循环引用。 这个时候我们就需要利用DTO了,取出要用的字段即可。 List<Student> stus = from Student s in dc.Student select newStudentDto { Num = s.Num, Name = s.Name }; JavaScriptSerializer jss = new JavaScriptSerializer(); Response.Write(jss.Serialize(stus)); Response.End(); 前台就可以用$.getJSON接收数据了。