[英]Convert list to array in c#
我有這個代碼
[WebMethod]
public static Array[] getStd()
{
List<student> std = new List<student>();
string mystr = ConfigurationManager.ConnectionStrings["str"].ConnectionString;
SqlConnection con = new SqlConnection(mystr);
SqlCommand cmd = new SqlCommand("select * from student");
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
foreach (DataRow item in dt.Rows)
{
student st = new student();
st.name = item["name"].ToString();
st.address = item["address"].ToString();
st.sex = item["sex"].ToString();
st.email = item["email"].ToString();
std.Add(st);
student[] arr = std.ToArray();
}
}
我想將此列表轉換為數組,然后最終返回數組。 我該如何實現?
還是有其他方法可以在不使用列表的情況下獲得相同的結果?
這是您的代碼更簡潔的等效代碼,它可以更快地運行並且占用更少的內存:
[WebMethod]
public static Student[] GetStudents()
{
String connectionString = ConfigurationManager.ConnectionStrings["str"].ConnectionString;
using(SqlConnection con = new SqlConnection(connectionString))
using(SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "SELECT * FROM [student]";
con.Open();
List<Student> ret = new List<Student>();
using(SqlDataReader rdr = cmd.ExecuteReader())
{
while(rdr.Read())
{
ret.Add( new Student() {
Name = rdr.GetString("Name"),
Address = rdr.GetString("Address"),
Sex = rdr.GetString("Sex"),
Email = rdr.GetString("Email")
} );
}//while
}//using
return ret.ToArray();
}//using
}//GetStudents
您可以使用Linq,那樣會更快
[WebMethod]
public static IEnumerable<student> getStd()
{
string mystr = ConfigurationManager.ConnectionStrings["str"].ConnectionString;
SqlConnection con = new SqlConnection(mystr);
SqlCommand cmd = new SqlCommand("select * from student");
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
var array =dt.AsEnumerable().Select(item =>
new student
{
name = item["name"].ToString(),
address = item["address"].ToString(),
sex = item["sex"].ToString(),
email = item["email"].ToString()
}).ToArray();
return array;
}
您也可以返回列表
[WebMethod]
public static List<student> getStd()
{
string mystr = ConfigurationManager.ConnectionStrings["str"].ConnectionString;
SqlConnection con = new SqlConnection(mystr);
SqlCommand cmd = new SqlCommand("select * from student");
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
var array = dt.AsEnumerable().Select(item =>
new student
{
name = item["name"].ToString(),
address = item["address"].ToString(),
sex = item["sex"].ToString(),
email = item["email"].ToString()
}).ToList();
return array;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.