[英]Convert list to array in c#
I have this code 我有这个代码
[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();
}
}
I want to convert this list to array and then finally return array. 我想将此列表转换为数组,然后最终返回数组。 How do I achieve that?
我该如何实现?
Or is there other way around to get the same result without using list? 还是有其他方法可以在不使用列表的情况下获得相同的结果?
Here's a more concise equivalent of your code that runs faster and with considerably less memory: 这是您的代码更简洁的等效代码,它可以更快地运行并且占用更少的内存:
[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
You can use Linq, that way will be faster 您可以使用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;
}
Also you can return a List 您也可以返回列表
[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.