我有一个C#应用程序(WinForm),可以将一些信息输入到多个DataSet中。从数据集中我将信息保存为一些字符串和int变量。有时值为null。所以我想在尝试存储到变量之前创建一个检查空值的函数,这样我就不会出现任何错误。
所以简而言之,我想替换这样的代码(假设我已经有2个名为“dataSet1”和“dataSet2”的DataSet):
row1 = dataSet1.Tables[0].Rows[0];
if(row1.IsNull("Department")) {errorMsg}
else if(row1.IsNull("Name")) {errorMsg}
else
//run code
row2 = dataSet2.Tables[0].Rows[0];
if(row2.IsNull("Department")) {errorMsg}
else if(row2.IsNull("Name")) {errorMsg}
else
//run code
更自动化的内容,如:
//the function
bool NullChecker(string datasetName, int rowNr, string fieldName)
{
if(datasetName.Tables[0].Rows[rowNr].IsNull(fieldName)) return false;
else return true;
}
//back in the code
string[] datasetNames; int[] rowNrs; string[] fieldNames;
for(int i=0; i<someLength; i++)
{ NullChecker(datasetNames[i], rowNrs[i], fieldNames[i]);}
可能?你认为这可能会减慢我的代码吗?
答案 0 :(得分:1)
您可以为空检查创建扩展方法
public static class Extensions
{
public static bool IsNull(this DataSet dataSet, int rowNumber, string columnName)
{
return dataSet.Tables[0].Rows[rowNumber].IsNull(columnName);
}
}
然后你可以像
一样使用它dataSet1.IsNull(0, "column");
如果您还要打印错误消息,只需添加参数string errorMsg
,然后在从方法调用返回之前,打印通过参数传递的文本,如下所示
public static bool IsNull(this DataSet dataSet, int rowNumber, string columnName, string errorMsg)
{
if(dataSet.Tables[0].Rows[rowNumber].IsNull(columnName))
{
// print an error message using Console or MessageBox, or whatever you use
return true;
}
return false;
}
然后你可以像
一样使用它dataSet1.IsNull(0, "column", "error");
答案 1 :(得分:0)
似乎代码足够好,只需要一个小编辑,需要用Database []数组替换字符串数组datasetName。
答案 2 :(得分:0)
if (dataSet1 != null && dataSet1.Tables.Count > 0)
---- further do actions