【问题标题】:C# method returns a list of objectC#方法返回一个对象列表
【发布时间】: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&lt;Reservation&gt; 吗?您不需要List&lt;Reservation&gt; resList = new List&lt;Reservation&gt;();,只需要return (from ... ).ToList(); 或最终var query = from ... ; return query.ToList();(查询或项目或任何雄辩的东西)????
  • 我的回答是正确的,请投票
  • @NigelAng 那:列表C# MSDoc | Level 0 | Level 1 | Level 2 | Level 3 | Level 4 | Linq 1 | Linq 2 | Visual C# 2008 编程入门 |专业 C# 7 和 .Net Core 2.0
  • @NigelAng: 仅供参考:你不需要打开或关闭与SqlDataAdaper.Fill 的连接,该方法会自动为你打开和关闭它:“如果在调用 Fill 之前连接已关闭,打开它以检索数据,然后关闭。如果在调用 Fill 之前连接已打开,则它保持打开状态。"
  • 最好摆脱SqlDataAdapterDataTable。无需填充DataTable 然后创建List&lt;Reservation&gt;。将它们替换为SqlCommandSqlDataReader 以直接从数据库中读取,在读取时创建新的Reservation 对象,并将其添加到resList。请参阅文档中的示例。

标签: c# collections


【解决方案1】:

如果要返回整个 resList 列表,然后返回列表本身

public List<Reservation> Reservations()
{
    List<Reservation> resList = new List<Reservation>();
    if (activeReservation != 0) 
    {
        SqlDataAdapter da = new SqlDataAdapter(cmd2);
        DataTable dt = new DataTable(); 
        da.Fill(dt);    
        con.Close();
        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(); 
     }

     return resList;
}

【讨论】:

    【解决方案2】:

    这个方法的返回类型应该是

    List<Reservation> 
    

    并且方法应该返回resList

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-16
      • 2021-03-01
      • 2016-08-30
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      相关资源
      最近更新 更多