我有一个缓存中的学生列表,我想更新一个项目,我该怎么做。
public class Student
{
int id;
string name;
string address;
}
public void updateStudent(Student st)
{
var student = _cache.Get(CacheVariable.cache_data_student) as List<Student>;
//How to update student.
}
答案 0 :(得分:0)
public class Student
{
int id;
string name;
string address;
}
public void updateStudent(Student st)
{
var student = _cache.Get(CacheVariable.cache_data_student) as List<Student>;
//First look for the st in Student list, you need the id field or primary key
var s = student.Where(x => x.idField == st.idField).FirstOrDefault();
s = st;
//student = st;//student.Update(st); //Not working. Only pass the value
}
答案 1 :(得分:0)
也许你可以通过一个小查询来做到这一点。
首先找到这个更新过的学生是谁?
从列表中找到这个学生的位置
然后使用新值更改此地点
var student = _cache.Get(CacheVariable.cache_data_student) as List<Student>;
Student findStudent = student.FirstOrDefault(x=> x.Id == st.Id);
int id = student.IndexOf(y);
student[id] = st;
或者如果你想要,你可以在最后一行使用另一种东西,如:
student[id] = new Student()
{
id = x,
name = "y",
address = "z"
};
对于这种情况,可能有更好的解决方案,但我不知道。我认为这可能会有所帮助
答案 2 :(得分:0)
由于ID应该是唯一标识符,因此请使用LINQ让学生更新:
public void updateStudent(Student st)
{
Student studentToUpdate = _cache.FirstOrDefault(s => s.id == st.id)
studentToUpdate?.Update(st);
}
要更新您的学生,您需要实施自己的方法。只需设置类似
的属性即可public class Student
{
public int id { get; }
public string name { get; set; }
public string address { get; set; }
public void Update(Student st)
{
this.name = st.name;
this.address = st.address;
}
}