在 C# 中也很简单。您只需要一个实例,Form1
然后您就可以在该实例上调用此方法。
但是,有更好的方法。此代码实际上不属于表单。表单用于 UI 交互,而不是用于业务逻辑和数据访问。您最好将此代码移动到两个表单都可以访问的公共位置。
创建数据访问类。像这样的东西:
public class StudentRepository
{
public static object GetStudents()
{
using (var DB = new myView1())
{
var studentList = (from s in DB.View123
select new { s.StudentName, s.StudentNumber, s.ClassName, s.StreamName, s.ParentName }).ToList();
dataGridViewStudents.DataSource = students;
return students.ToList();
}
}
}
另请注意,该方法现在是static
,这意味着它不需要调用实例。(这就像Shared
VB 中的关键字。)所以您的表单可以调用:
var students = StudentRepository.GetStudents();
尽管不在此问题的范围内,但您要修复的另一件事是返回类型。 object
不是很具体。您应该有一个Student
类,并且该方法应该返回IList<Student>
。像这样的东西:
public class Student
{
public string StudentName { get; set; }
public int StudentNumber { get; set; }
public string ClassName { get; set; }
public string StreamName { get; set; }
public string ParentName { get; set; }
}
和:
public class StudentRepository
{
public static IList<Student> GetStudents()
{
using (var DB = new myView1())
{
var studentList = (from s in DB.View123
select new Student { StudentName = s.StudentName, StudentNumber = s.StudentNumber, ClassName = s.ClassName, StreamName = s.StreamName, ParentName = s.ParentName }).ToList();
dataGridViewStudents.DataSource = students;
return students.ToList();
}
}
}
我对字段的类型做了一些假设,如果它们错了,你应该能够纠正它们。您甚至可能希望它返回 anIEnumerable<Student>
而不是IList<Student>
如果它是不变的结果(也就是说,如果它只是学生的枚举而不是要添加、删除等的列表)。
您可以在这里做更多的事情,例如为其他数据元素创建一个对象,例如Class
(可能需要一个不同的名称,只是为了干净)Parent
、、、Stream
等等。(想想看,其中几个可能需要更好的名称。您的变量命名通常需要一些工作。类似Form1
或myView1
不能很好地传达意图的事情。)