C# 如何将多个属性添加到IEnumerable列表中<;学生>;
我创建了一个类C# 如何将多个属性添加到IEnumerable列表中<;学生>;,c#,ienumerable,C#,Ienumerable,我创建了一个类Student,在该类中,它具有以下属性: class Student: IEnumerable<Student> { private int age =0 ; private string name =""; private bool isAdult = false; List<Student> StudentList = new List<Student>(); public
Student
,在该类中,它具有以下属性:
class Student: IEnumerable<Student>
{
private int age =0 ;
private string name ="";
private bool isAdult = false;
List<Student> StudentList = new List<Student>();
public Student this[int index]
{
get { return StudentList [index]; }
set { StudentList .Insert(index, value); }
}
public IEnumerator<Student> GetEnumerator()
{
return StudentList.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
public string Name
{
get { return name ; }
set { name = value; }
}
public int Age
{
get { return age ; }
set { age = value; }
}
public bool IsAdult
{
get { return isAdult ; }
set { isAdult = value; }
}
}
班级学生:IEnumerable
{
私人年龄=0;
私有字符串名称=”;
private bool isAdult=假;
List StudentList=新列表();
公立学生本[int索引]
{
获取{return StudentList[index];}
集合{StudentList.Insert(索引,值);}
}
公共IEnumerator GetEnumerator()
{
return StudentList.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
返回此.GetEnumerator();
}
公共字符串名
{
获取{返回名称;}
设置{name=value;}
}
公共信息
{
获取{返回年龄;}
设置{age=value;}
}
公共图书馆
{
获取{return isAdult;}
设置{isAdult=value;}
}
}
现在我要做的是将oracle查询的结果加载到新的学生列表中
//...
try
List < Student > StudentList = new List < Student > (); {
OracleCommand command = new OracleCommand(sqlQuery, connection);
OracleDataReader oracleDataReader = command.ExecuteReader();
while (oracleDataReader.Read()) {
age = Convert.Int64(oracleDataReader["age"]);
name = oracleDataReader["name"].toString();
isAdult = Convert.boolean(oracleDataReader["isAdult"])
}
}
//...
/。。。
尝试
ListStudentList=新列表();{
OracleCommand=新的OracleCommand(sqlQuery,连接);
OracleDataReader OracleDataReader=command.ExecuteReader();
while(oracleDataReader.Read()){
age=Convert.Int64(oracleDataReader[“age”]);
name=oracleDataReader[“name”].toString();
isAdult=Convert.boolean(oracleDataReader[“isAdult”])
}
}
//...
假设查询返回100个student,student类实际上包含10-15个属性,我只拿3个(name,age,isAdult)作为例子来解释我的问题
是否可以在
StudentList
中加载查询返回的每一行?主要问题是Student
类试图实现IEnumerable
接口。那没有道理。IEnumerable
接口应该由其他类实现。或者使用实现此接口的List
类。Student
类应仅包含您要保存的关于某个学生的值
假设您在while循环的某个地方只有一个List
对象,您可以迭代数据库中的行,创建一个新的Student
对象并将其添加到列表中
IList<Student> students = new List<Student>();
while (oracleDataReader.Read()) {
int age = Convert.Int64(oracleDataReader["age"]);
string name = oracleDataReader["name"].toString();
bool isAdult = Convert.boolean(oracleDataReader["isAdult"]);
Student student = new Student {
age = age,
name = name,
isAdult = isAdult
};
students.Add(student);
}
IList students=new List();
while(oracleDataReader.Read()){
int age=Convert.Int64(oracleDataReader[“age”]);
字符串名称=oracleDataReader[“name”]。toString();
bool isAdult=Convert.boolean(oracleDataReader[“isAdult”]);
学生=新生{
年龄=年龄,
name=name,
isAdult=isAdult
};
学生。添加(学生);
}
然后您可以使用
学生
列表。主要问题是学生
类试图实现IEnumerable
接口。那没有道理。IEnumerable
接口应该由其他类实现。或者使用实现此接口的List
类。Student
类应仅包含您要保存的关于某个学生的值
假设您在while循环的某个地方只有一个List
对象,您可以迭代数据库中的行,创建一个新的Student
对象并将其添加到列表中
IList<Student> students = new List<Student>();
while (oracleDataReader.Read()) {
int age = Convert.Int64(oracleDataReader["age"]);
string name = oracleDataReader["name"].toString();
bool isAdult = Convert.boolean(oracleDataReader["isAdult"]);
Student student = new Student {
age = age,
name = name,
isAdult = isAdult
};
students.Add(student);
}
IList students=new List();
while(oracleDataReader.Read()){
int age=Convert.Int64(oracleDataReader[“age”]);
字符串名称=oracleDataReader[“name”]。toString();
bool isAdult=Convert.boolean(oracleDataReader[“isAdult”]);
学生=新生{
年龄=年龄,
name=name,
isAdult=isAdult
};
学生。添加(学生);
}
然后你可以使用你的
学生
列表。属性?我没有看到属性。@RandRandom抱歉,属性意味着属性,我们国家的语言有点不同,我们称之为属性属性,我编辑了问题以匹配多国英语。顺便说一句,您应该重新评估数据库中的“年龄”列存储生日并基于此计算年龄更明智。@RandRandom没有名为“年龄”的列我只是使用虚拟列名来解释我的目标。感谢您提供的信息和建议什么是Convert.Int64
、Convert.boolean
和toString
?属性?我没有看到属性。@RandRandom抱歉,属性意味着属性,我们国家的语言有点不同,我们称之为属性属性,我编辑了问题以匹配多国英语。顺便说一句,您应该重新评估数据库中的“年龄”列存储生日并基于此计算年龄更明智。@RandRandom没有名为“年龄”的列我只是使用虚拟列名来解释我的目标。感谢您提供的信息和建议什么是Convert.Int64
,Convert.boolean
和toString
?更有意义,我用IEnumerable
代替DataTable
,因为我听说IEnumerable更好,更有意义,我用IEnumerable
来代替DataTable
,因为我听说IEnumerable更好