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();
この質問の範囲外ですが、修正したいもう1つのことは、その戻り型です。 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();
}
}
}
フィールドのタイプについていくつかの仮定をしました。フィールドが間違っている場合は、それらを修正できるはずです。不変の結果である場合(つまり、学生の列挙であり、追加または削除するリストではない場合など)IEnumerable<Student>
ではなく、を返すようにすることもできます。IList<Student>
Class
ここでできることは他にもたくさんあります。たとえば、 (きれいにするために別の名前が必要になる場合があります)、、などの他のデータ要素のオブジェクトがあります(Parent
考えてみるとStream
、これらのいくつかには必要な場合があります)より良い名前。一般に、変数の名前付けには少し作業が必要です。意図がうまく伝わらない、Form1
または伝わらないなどです。)myView1