【问题标题】:I want to add a new object into the list. Can someone explain how to do this?我想在列表中添加一个新对象。有人可以解释如何做到这一点吗?
【发布时间】:2021-09-07 04:20:53
【问题描述】:

我正在尝试将多个对象添加到列表中 (tmpUsers),但是当我尝试添加第二个对象时,我进入了 catch 块?有人可以看看我的做法是否正确并帮助我了解我哪里出错了吗?

public List<User> GetFilteredUsers(long CompanyKey, int sitekey, int filtertype=4, string filtervalue="", UserRequestContext requestContext = null)
{
    List<User> tmpUsers = new List<User>();

    Database db = null;
    IDataReader dr = null;
    DbCommand dbCommand = null;

    try
    {
        db = DatabaseFactory.CreateDatabase("vaultDataConfiguration");
        dbCommand = db.GetStoredProcCommand("GetFilteredUsers");
        db.AddInParameter(dbCommand, "@CompanyKey", DbType.Int32, CompanyKey);
        db.AddInParameter(dbCommand, "@Sitekey", DbType.Int32, sitekey);
        db.AddInParameter(dbCommand, "@FilterType", DbType.Int32, filtertype);
        db.AddInParameter(dbCommand, "@FiterValue", DbType.String, filtervalue);
        dr = db.ExecuteReader(dbCommand);
        User tmpUser = new User();
        while (dr.Read())
        {
            
            tmpUser.GroupName = dr["groupName"] != DBNull.Value ? dr["groupName"].ToString() : "";
            tmpUsers.Add(tmpUser);
        }
        tmpUser = new User();
        tmpUser.CompanyUdidDescription = dr["companyUDIDDescription"] != DBNull.Value ? dr["companyUDIDDescription"].ToString() : "";
        tmpUsers.Add(tmpUser);
        return tmpUsers;
    }
    catch (Exception ex)
    {
        LogWriter.WriteAuditLog(ex.Message, LogLevel.ERROR, exception: ex, _event: "UserDAO->GetFilteredUserDetails", requestContext: requestContext);
        throw;
    }
    finally
    {
        if (dr != null)
        {
            dr.Close();
            dr.Dispose();
        }
    }
}

【问题讨论】:

  • 有什么异常?
  • 添加用户发生在 While 循环之外。不确定如何/何时添加第二个用户
  • 您大概想为数据库中的每条记录创建一个新的User 对象,从数据库中设置其GroupNameCompanyUdidDescription 属性,并将User 对象添加到列表中, 正确的?您确实应该将行 User tmpUser = new User();; 移动到 while 循环内,以及 while 循环之后、return 之前的代码。

标签: c# .net asp.net-core asp.net-core-mvc


【解决方案1】:

读者记录结束后,您正在尝试阅读。试试这段代码

 
 while (dr.Read())
{
  var tmpUser = new User();                   
  tmpUser.GroupName = dr["groupName"] != DBNull.Value ? dr["groupName"].ToString() : "";
 tmpUser.CompanyUdidDescription = dr["companyUDIDDescription"] != DBNull.Value ? 
 dr["companyUDIDDescription"].ToString() : "";
 tmpUsers.Add(tmpUser);
}
return tmpUsers;

【讨论】:

    【解决方案2】:

    当您尝试分配tmpUser.CompanyUdidDescription 时,您已经到达DataReader 的末尾,但您仍在尝试从中读取。

    你不能这样做。

    见:DataReader cursor rewind

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多