具有Null值c#的数据集比较
本文关键字:数据集 比较 Null 具有 | 更新日期: 2023-09-27 18:26:11
Goodday
我似乎无法在Null比较中使用我的数据集我试图做一个语句(下面的尝试),它只会在数据集为空时继续我的代码。
代码1:
if ((string)dts.Tables[0].Rows[0]["RECID"] != null)
^只是跳过我的if,我知道它是空的(检查了我的手表),即使它是空也会继续。
代码2:
long Recid = 0;
Boolean checkrecid = long.TryParse((string)dts.Tables[0].Rows[0]["RECID"], out Recid);
if (checkrecid == false)
^在我的Tryparse上崩溃。我知道你可以使用Trykatching,但我不想使用它,因为它会让我的程序运行得更慢,而且它每天需要读取10000行。。。
错误:
A first chance exception of type 'System.IndexOutOfRangeException' occurred in System.Data.dll
这意味着它什么都找不到,但我已经知道了。
编辑:我不希望出现错误。任何以前的方法,在其他情况下都有效,都会返回一个范围错误的索引。我将添加此。。数据集填充了来自SQL服务器的基于电话号码和其他数据的数据。如果他找不到来自文本文件的电话号码,他将什么都不返回,没有行,没有列,什么也不返回
提前感谢,DZ
您需要使用DBNull.Value
而不是空
编辑:超出界限的索引可能意味着根本没有行。试着用这个替换你的if:
if (dts.Tables[0].Rows.Count > 0 && dts.Tables[0].Rows[0]["RECID"] != DBNull.Value)
{
}
此行:
if ((string)dts.Tables[0].Rows[0]["RECID"] != null)
需要
if ((string)dts.Tables[0].Rows[0]["RECID"] != DBNull.Value)
或者你可以删除那张支票:
Boolean checkrecid = long.TryParse((dts.Tables[0].Rows[0]["RECID"] ?? string.Empty), out Recid);
if((string)dts.Tables[0].Rows[0]["RECID"] is DBNull)
{ // will go here }
找到了!
int strTables=dts。Tables[0]。Rows.Count;如果(strTables==1){//代码转到此处}
类型安全的替代方法是使用Field扩展方法。它将返回"null"而不是DBNull。空字段的值。
if (dts.Tables[0].Rows[0].Field<string>("RECID") != null)