C# 如何在C语言中检查和替换空值#
任何人都可以告诉我一种方法,用字符串消息“NO DATA”检查并替换strList中的空值,或者允许它们出现在dtList中。 因为当我在这个列表中遇到一个空值时,它会显示一个错误,比如“位置上没有行…”C# 如何在C语言中检查和替换空值#,c#,null,C#,Null,任何人都可以告诉我一种方法,用字符串消息“NO DATA”检查并替换strList中的空值,或者允许它们出现在dtList中。 因为当我在这个列表中遇到一个空值时,它会显示一个错误,比如“位置上没有行…” 私有数据表getSomething1(字符串文本){ DataTable dtb=新的DataTable(); ... ... 返回dtb; } ... 受保护的无效按钮\u单击(对象发送者,图像ClickEventArgs e){ 列表strList=新列表(){ getSomething(
私有数据表getSomething1(字符串文本){
DataTable dtb=新的DataTable();
...
...
返回dtb;
}
...
受保护的无效按钮\u单击(对象发送者,图像ClickEventArgs e){
列表strList=新列表(){
getSomething(txtInput.Text),
getSomething2(txtInput.Text),
getSomething3(txtInput.Text),
...
};
}
我在网络表单中使用了C#。
请帮我修复这个代码或指导我解决它的方法。
提前谢谢
@技术,@riffnl:我终于明白了你所有的想法,它现在真的起作用了。谢谢各位专家的建议。所以,这是我的解决方案^^
private String ConvertNullToEmptyString(DataTable element)
{
if (element.Rows.Count > 0) //just add this condition here
{
if (!DBNull.Value.Equals(element.Rows[0]["FullName"]))
return (string)element.Rows[0]["FullName"] + " ";
else
return String.Empty;
}
return "NO DATA";
}
protected void ....(){
List<DataTable> strList = new List<DataTable>(){
GetItem1(txtName.Text), //private DataTable GetItem1(String t)
GetItem2(txtName.Text), //...
};
txtGrD_D.Text = ConvertNullToEmptyString(strList[0]);
txtGrM_D.Text = ConvertNullToEmptyString(strList[1]);
}
私有字符串ConvertNullToEmptyString(DataTable元素)
{
如果(element.Rows.Count>0)//只需在此处添加此条件
{
如果(!DBNull.Value.Equals(element.Rows[0][“FullName”]))
返回(字符串)元素。行[0][“全名”]+“”;
其他的
返回字符串。空;
}
返回“无数据”;
}
受保护的空…(){
列表strList=新列表(){
GetItem1(txtName.Text),//私有数据表GetItem1(字符串t)
GetItem2(txtName.Text),//。。。
};
txtGrD_D.Text=ConvertNullToEmptyString(strList[0]);
txtGrM_D.Text=ConvertNullToEmptyString(strList[1]);
}
您可以使用C的?:
string s = null;
s = s ?? "NO DATA";
// s now equals "NO DATA";
通过使用String.IsNullOrEmpty来尝试这种方法。 我认为dataTable中的单元格可以为空
//creating an example table with one row (no data inisde):
DataTable table = new DataTable();
table.Columns.Add("FullName", typeof(string));
table.Rows.Add("");
string str = ConvertNullToEmptyString(table);
//method to check for string:
private String ConvertNullToEmptyString(DataTable element)
{
String s = element.Rows[0]["FullName"].ToString();
return (string.IsNullOrEmpty(s) ? "NO DATA" : s);
}
因为您使用的是datatable,所以我假设您所说的不是NULL(或nill),而是DBNull。。 将函数ConvertNullToEmptyString更改如下:
private String ConvertNullToEmptyString(DataTable element){
if (element.Rows[0]["Fullname"] == DBNull.Value || element.Rows[0]["Fullname"] == null) {
return "NO DATA";
} else {
return element.Rows[0]["Fullname"].ToString();
}
}
if (element.Rows.Count >0)
按要求:新样品
// a list of datatables each containing 1 row, wasn't that the point of datatables
// anyway -- I think you don't have any rows, so let's try this:
private String ConvertNullToEmptyString(DataTable element)
{
if (element.Rows.Count == 0)
{
return "NO DATA";
}
if (element.Rows[0]["Fullname"] == DBNull.Value || element.Rows[0]["Fullname"] == null)
{
return "NO DATA";
}
else
{
return element.Rows[0]["Fullname"].ToString();
}
}
protected void Test()
{
List<DataTable> strList = new List<DataTable>(){
GetItem("test1"), //private DataTable GetItem1(String t)
GetItem("test2") //...
};
txtGrD_D.Text = ConvertNullToEmptyString(strList[0]);
}
//一个数据表列表,每个表包含一行,这不是数据表的要点吗
//不管怎样--我想您没有任何行,所以让我们试试这个:
私有字符串ConvertNullToEmptyString(DataTable元素)
{
if(element.Rows.Count==0)
{
返回“无数据”;
}
if(element.Rows[0][“Fullname”]==DBNull.Value | | element.Rows[0][“Fullname”]==null)
{
返回“无数据”;
}
其他的
{
返回元素。行[0][“Fullname”].ToString();
}
}
保护空隙试验()
{
List strList=new List(){
GetItem(“test1”),//私有数据表GetItem1(字符串t)
GetItem(“test2”)/。。。
};
txtGrD_D.Text=ConvertNullToEmptyString(strList[0]);
}
如果错误是“位置没有行…”,那么我猜问题不是字符串为null,而是您试图访问datatable中不存在的行
特别是在以下方面:
String s = element.Rows[0]["FullName"].ToString();
您尝试访问datatable的第一行。
如果数据表是空的怎么办?你犯了个错误!
因此,您应该检查datatable是否包含具有以下内容的行:
private String ConvertNullToEmptyString(DataTable element){
if (element.Rows[0]["Fullname"] == DBNull.Value || element.Rows[0]["Fullname"] == null) {
return "NO DATA";
} else {
return element.Rows[0]["Fullname"].ToString();
}
}
if (element.Rows.Count >0)
答复你的评论: 是的,我们可以。 修改您的:
foreach (DataTable element in strList)
变成类似于:
foreach (DataTable element in strList)
{
if (element.Rows.Count>0)
{
if(strList.Any(item => item == null))
{
ConvertNullToEmptyStringelement);
}
txtItem1.Text = mytext ;
.....
}
else
{
txtItem1.Text = "No Data";
}
}
如果第0行为null,则无法将其解析为字符串,因此请在此处检查null或检查row count确实不能为null,可以为DBNull,尽管如此。数据表中不存在此行。它是空的,所以我想让它们成为字符串消息=“无数据”,我不知道怎么做。我们能做到吗,专家?是的:看看答案,我已经用一个可能的解决方案编辑了它。你能指出我的错误吗。我已经像你说的那样在上面编辑了我的帖子,错误可能在以下行:
txtGrM_D.Text=strList[1]。行[0][“全名”]。ToString()
这里您引用的是一个数据表(strList[1]),其中您没有检查是否至少有一个row.uk。我得到了它。我已经找到了一种方法,在更换之前先检查一下。谢谢,如果这是正确答案,请在答案前打绿色勾,将其标记为正确-这将提高您的接受率。我理解您的解决方案。这听起来合乎逻辑。我稍微改变一下以适应我的情况。但是我不知道为什么它仍然是。。。“位置0处没有行。”。你能指出我的错误吗。我已经像你的想法一样在上面编辑了我的帖子。我明白你的想法,用我的方式去做。你的想法在很大程度上帮助我找到了解决办法。感谢proI我不确定,但请尝试使用:if(element.Rows.Any())代替:if(element.Rows.Count==0)