2016-06-30 3 views
0

私はC#/ VB - (オブジェクト)クラスのプロパティの値を変更

public List<Students> StudentsClassCollection; 

Studentsクラス以下のようなStudentsのリストを持っているが、以下のようになります:

public class Students 
{ 
    public string StudentName; 
    public bool Passed; 
} 

私がしたいです学生の1人にアクセスし、Passedの値をfalseからtrueに変更します。 どうすればいいですか?

+0

生徒間の一意の値は_StudentNameですか?そうでない場合は、どのようにして同じ名前の生徒同士を正しく識別することになりますか? – Steve

+0

あなたが生徒のクラスを言うとき、そのコードで発展するすべての生徒はこのクラスに生徒のリストがあると思うでしょう。間違った名前、私は答えを掲示しました –

答えて

3

使用LINQの(あなたが欲しいとき、それはあなたが学生のリストをやって生徒することをお使いの場合にはそれを見ることができます)学生とない学生を呼び出さなければなりません生徒を名前で識別し、そのプロパティをtrueに設定します。ちょうど名前を使用することは、完全一致が必要なときにレコードを見つける恐ろしい方法です(文字の場合も含みます)。主キーを追加するか、最初と最後に名前を分割し、生年月日を含めます。

public void UpdateStudentToPassed(string studentName) 
    { 
     StudentsClassCollection.Single(obj => obj.StudentName == studentName).Passed = true; 
    } 
2
var foundStudent = StudentsClassCollection.First(s => s.StudentName == "LookingForYou"); 
foundStudent.Passed = true; 
+0

もちろん、その名前の学生がいない場合、これは驚くべきことです。 – Steve

+0

@スティーブにはいくつかの仮定がありました。私が自分のデータについて確信しているときは、まずFirst、FirstOrDefaultを使用してください。 – Yahya

1

あなたはインデックスで、それは同じくらい簡単ですどの学生、わかっている場合:あなたはおそらく、名前で学生を探しているなら

StudentsClassCollection[i].Passed = true

var student = StudentsClassCollection.FirstOrDefault(s => s.name == "Bob"); 
if (student != null) { 
student.Passed = true 
} 

を学生のための "ボブ"

+0

それ以外の場合は「Bob」が1つだけの場合は、 – Steve

+0

同じ名前の生徒が複数いる場合、システムには大きな問題があります。どの生徒が実際に渡されたかをどのように教えていますか? 'foreach(StudentClassCollection.Where(s => s.name ==" Bob ")内のvar student { student.passed = true;これは、すべての生徒が「Bob」と呼ばれる有効な動作であれば可能です。 } ' – daf

0

のうちの1つのインポOOPで物事がベースのもののクラスをやっているテントに

public List<Student> StudentsClassCollection = new List<Students>(); 
    StudentsClassCollection.Add(new Student("Ben","true")) 

    public class Student 
    { 
     public string StudentName {get; set;} 
     public bool Passed { get; set;} 

     public Student(string name,Bool pass) 
     { 
      this.StudentName = name; 
      this.Passed = pass; 
     } 
    } 

    foreach(Student s in StudentsClassCollection) 
    { 
     if(s.StudentName.Equals("what you looking for")) 
      s.Passed = true; 
    } 
関連する問題