如果某些字段中有空值,如何获取数据集

Posted

技术标签:

【中文标题】如果某些字段中有空值,如何获取数据集【英文标题】:How to get the Dataset if there are null values in some of the fields 【发布时间】:2014-06-06 07:05:30 【问题描述】:
DataSet ds = ast.GetUserLoginInfo(Param);

foreach (DataRow dr in ds.Tables[0].Rows)

    if (ds.Tables.Count > 0)
    
        if (ds.Tables[0].Rows.Count > 0)
        
            _userstate.ID = Convert.ToInt32(ds.Tables[0].Rows[0]["ID"]);
            _userstate.Name = Convert.ToString(ds.Tables[0].Rows[0]["Name"]).Trim();
            _userstate.Email = Convert.ToString(ds.Tables[0].Rows[0]["Email"]).Trim();
            _userstate.Username = Convert.ToString(ds.Tables[0].Rows[0]["Username"]).Trim();              
            _userstate.GroupId = Convert.ToInt32(ds.Tables[0].Rows[0]["GroupId"]);
            _userstate.BranchId = Convert.ToInt32(ds.Tables[0].Rows[0]["BranchId"]);
            _userstate.BranchId = Convert.ToInt32(ds.Tables[0].Rows[0]["DeptId"]);
            _userstate.RoleId = Convert.ToInt32(ds.Tables[0].Rows[0]["RoleId"]);
            _userstate.IsActive = Convert.ToBoolean(ds.Tables[0].Rows[0]["IsActive"]);

            _siteuser.UserStat = _userstate;
        

对于某些用户,BranchId 为空,因为它们是头部,所有分支都在它们之下。因此,当用户登录时,数据库在数据集中返回非任何内容。

【问题讨论】:

所以?有什么问题? 您将DeptId 分配给BranchId 我很确定您不是故意的。 标题没有意义。 是什么意思?获取数据集?你已经有数据集了! 错误?错误是什么?发布它。 引用变量 ds 没有指向任何东西。 【参考方案1】:

将此代码用于所有字段,

 _userstate.ID = Convert.ToInt32(ds.Tables[0].Rows[0]["ID"] == null ? 0 : ds.Tables[0].Rows[0]["ID"]);
 _userstate.Name = Convert.ToString(ds.Tables[0].Rows[0]["Name"] == null ? "" ds.Tables[0].Rows[0]["Name"] ).Trim();

【讨论】:

【参考方案2】:

由于 branchId 可以为空,ConvertToInt32 会抛出异常。试试这个。

int.TryParse(ds.Tables[0].Rows[0]["BranchId",  _userstate.BranchId)

【讨论】:

它抛出编译时错误“TryParse 方法没有过载需要一个参数” @Smokingmonkey :你是对的,我纠正了它,它的第二个参数设置了结果。它应该工作。试试看

以上是关于如果某些字段中有空值,如何获取数据集的主要内容,如果未能解决你的问题,请参考以下文章

请教各位大神,用mongoose如何获取最新插入的一条数据的id

如果在某些地方已经有空值,如何将 null=True 字段更改为 null=False 字段?

火花数据集:如何从列中获取唯一值的出现次数

如何在某些情况下在两个字段值之间切换?

如何使用 NodeJS 仅将 NeDB 数据库中的某些字段存储到数组中

如何获取数据集行的特定版本?