我在MVC Visual Studio上开发了一个程序。我在数据库上有3个不同的表;老师,学生和家长。我使用了实体框架,我创建了这些表的模型.'Joindate'是公共属性,每个表中有1000个人。 我需要在所有表格中找到最新的10人。 我怎么能这样做?
public class teachers
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime JoinDate { get; set; }
public int Age { get; set; }
}
public class students
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime JoinDate { get; set; }
public string Lesson { get; set; }
}
public class parents
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime JoinDate { get; set; }
public string StudentName { get; set; }
public string Job { get; set; }
}
答案 0 :(得分:1)
您需要为ordere中的三个类提供一些公共类或接口,以将不同的实例存储到一个列表中。该列表只能有一个类型。
为所有这些定义一个基本接口:
interface IPerson
{
DateTime JoinDate { get; set; }
// more common properties or methods
}
public class Teacher : IPerson
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime JoinDate { get; set; }
public int Age { get; set; }
}
public class Student : IPerson
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime JoinDate { get; set; }
public string Lesson { get; set; }
}
public class Parent : IPerson
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime JoinDate { get; set; }
public string StudentName { get; set; }
public string Job { get; set; }
}
现在,您可以轻松地将实现该接口的实例放入列表中:
var myList = new List<IPerson> { aTeacher, aStudent, aParent };
最后根据公共属性对它们进行排序:
var result = myList.OrderBy(x => x.JoinDate);
另外,我将类名更改为单数以识别Teacher
的单个实例。一个Teachers
毫无意义。同时使用大写名称来遵循命名约定。
答案 1 :(得分:0)
首先,您必须创建一个类“Person”(或其他名称),它将指定公共属性“JoinDate”,以及所有其他公共属性(Name等)。这个类还应该实现IComparable,你将在其中实现方法“public int CompareTo(object obj)”,如下所示:
public int CompareTo(Person p) {
return this.JoinDate.CompareTo(p.JoinDate);
}
您的三个班级(教师,学生和家长)应该从这个班级继承。然后你必须创建一个List实例并将三个列表添加到它:
List<Person> rList = new List<Person>();
rList.AddRange(teachersList);
rList.AddRange(studentsList);
rList.AddRange(parentsList);
要对列表进行排序,您只需要致电:
rList.Sort();
最后你的名单“rList”将被排序。
我希望这会有所帮助。