假设我有这个代码(伪代码)
class SomeClass
{
class Person
{
public static string Name { get; set; }
public static int Age { get; set; }
}
List<Person> person = new List<person>;
public void SelectPerson()
{
DataTable dt = new DataTable();
SqlConnection conn = GetConnection();
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT name, age FROM person", conn);
da.Fill(dt);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以根据DataAdapter的结果填写列表(人)吗?我该怎么办?或者有任何解决方法吗?谢谢...
可能最好的方法是不要先读入数据表:
var dr = new DataReader(....) // Fill in what is needed, can't remember offhand
while(dr.Next())
{
persons.Add(
new Person() {
Name = (string) r["Name"],
Age = (int) r["Age"]
}
);
}
Run Code Online (Sandbox Code Playgroud)
警告:您希望快速关闭DataReader /连接,不要进行大量处理.上面的代码比使用DataTable作为中介更有效.
但如果您确实想先使用数据表,可以使用LINQ:
var list = dt.AsEnumerable().Select(r => new Person() {
Name = (string) r["Name"],
Age = (int) r["Age"] }
).ToList()
Run Code Online (Sandbox Code Playgroud)
或只是ittrate of dt.Rows并创建一个新人并将其添加到列表中
| 归档时间: |
|
| 查看次数: |
30331 次 |
| 最近记录: |