【发布时间】:2021-06-12 09:58:54
【问题描述】:
我是 C# 新手,所以如果这个问题不恰当,我提前道歉。
我有一个方法,代码如下:
if (activeReservation != 0)
{
SqlDataAdapter da = new SqlDataAdapter(cmd2);
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
List<Reservation> resList = new List<Reservation>();
resList = (from DataRow dr in dt.Rows
select new Reservation()
{
roomType = dr["Room Type"].ToString(),
roomNumber = dr["Room Number"].ToString(),
date = dr["Date"].ToString(),
time = dr["Time"].ToString(),
numStudents = Convert.ToInt32(dr["Number of Students"]),
duration = dr["Duration"].ToString(),
}).ToList();
}
如果我想返回对象列表resList,这个方法的返回类型是什么?
【问题讨论】:
-
这是
List<Reservation>吗?您不需要List<Reservation> resList = new List<Reservation>();,只需要return (from ... ).ToList();或最终var query = from ... ; return query.ToList();(查询或项目或任何雄辩的东西)???? -
我的回答是正确的,请投票
-
@NigelAng: 仅供参考:你不需要打开或关闭与
SqlDataAdaper.Fill的连接,该方法会自动为你打开和关闭它:“如果在调用 Fill 之前连接已关闭,打开它以检索数据,然后关闭。如果在调用 Fill 之前连接已打开,则它保持打开状态。" -
最好摆脱
SqlDataAdapter和DataTable。无需填充DataTable然后创建List<Reservation>。将它们替换为SqlCommand和SqlDataReader以直接从数据库中读取,在读取时创建新的Reservation对象,并将其添加到resList。请参阅文档中的示例。
标签: c# collections