-1

クラスがあります

class Student
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int ID { get; set; }
}

これで、List of Student オブジェクトを次のように作成しました。

List<Student> lst = new List<Student>();

クラスの 3 つのプロパティは、3 つの異なるデータ ソースから取得されます。そのため、オブジェクトのすべてのプロパティを一度に追加することはできません。次のように ID プロパティを追加しています。

lst.Add(new Student { ID = 1 }, new Student { ID = 2 })

ここで、既存のリストに "FirstName" または "LastName" プロパティの値を設定したいと考えています。どうすればこれを行うことができますか?

4

6 に答える 6

1

更新する要素と一致する要素からインデックスを取得できます。

int index= MyObjectList.FindIndex(x=>x.Id==object.Id);

そしてそれを更新した後:

MyObjectList[index]=object;
于 2013-01-16T15:26:59.627 に答える
1
List<Student> lst = new List<Student>();
lst.Add(new Student { ID = 1 });
lst.Add(new Student { ID = 2 });
//Get the student you want by id then use that to populate the remaining properties 

var temp = lst.Single(l => l.ID == 1);
temp.FirstName = "fname";
temp.LastName = "lastname";
于 2012-06-17T08:35:07.077 に答える
1

Add()メソッド呼び出しを混在させないでください:

list.Add(new Student());

およびコレクションの初期化構文:

List<Student> list = new List<Student>
{
    new Student(),
    new Student()
};

それで

int index = 1;
Student student = list[index]; // may cause IndexOutOfRangeException
student.Name = "Me"; // may cause NullReferenceException

またはそれより短い:

list[i].Name = "Me"; // may cause them both too
于 2012-06-17T08:39:49.247 に答える
0

他のデータソースにが含まれていると仮定すると、studentIdすべての学生には姓名があります。linqを使用してlastNameListおよびコレクションに参加します。firstNameList他の2つにもその値があるため、studentIdリストは必要ありません。

var list =
         (from lastName in lastNameList
         join firstName in firstNameList on lastName.studentId equals firstName.studentId
         select new Student()
         {
            .ID = lastName.studentId,
            .FirstName = firstName.Name,
            .LastName = lastName.Name
         }).ToList();
于 2012-06-17T08:56:34.933 に答える
0

list.count-1 を使用して、リストの最後の項目を取得できます。その後、必要なプロパティを更新できます。

List<Student> lst=new List<Student>();
lst.Add(new Student { ID = 1, FirstName = "FirstName", LastName = "LastName" });
//Then get props from other datasource
lst[lst.Count-1].FirstName="FirstName";
lst[lst.Count-1].LastName="LastName";
于 2012-06-17T08:27:40.920 に答える
0

私はここで推測しているだけです... うまくいかない場合は試してみてください。

lst.Add(new Student{ID=2, FirstName="The", LastName="Stig"});

または、 Student オブジェクトのコンストラクターを定義できます...

public Student(int mID, string mFirstName, string mLastName)
{
    ID = mID;
    FirstName = mFirstName;
    LastName = mLastName;
}

次に使用します

lst.Add(new Student(2, "The", "Stig"));
于 2012-06-17T08:27:53.283 に答える