C# 如果数据集有行?
我还有一个问题 我有以下声明:C# 如果数据集有行?,c#,C#,我还有一个问题 我有以下声明: foreach (DataRow dr_art_custsuply in ds.Tables["CustomerSupplier"].Rows) { //Podaci iz CustomerSupplier-a //Id dobavljača string cust_id; if (!dr_art_custsuply.Table.Columns.Contains("Id")) cust_id = ""; e
foreach (DataRow dr_art_custsuply in ds.Tables["CustomerSupplier"].Rows)
{
//Podaci iz CustomerSupplier-a
//Id dobavljača
string cust_id;
if (!dr_art_custsuply.Table.Columns.Contains("Id"))
cust_id = "";
else if (dr_art_custsuply["Id"].ToString().Length <= 0)
cust_id = "";
else
cust_id = dr_art_custsuply["Id"].ToString();
//Naziv dobavljača
string name;
if (!dr_art_custsuply.Table.Columns.Contains("Name"))
name = "";
else if (dr_art_custsuply["Name"].ToString().Length <= 0)
name = "";
else
name = dr_art_custsuply["Name"].ToString();
//GLN
string gln;
if (!dr_art_custsuply.Table.Columns.Contains("GLN"))
gln = "";
else if (dr_art_custsuply["GLN"].ToString().Length <= 0)
gln = "";
else
gln = dr_art_custsuply["GLN"].ToString();
}
但我有个错误,所以帮帮忙,怎么写
谢谢 只需在循环之前添加此检查(如果没有行,它将不会进入foreach)
如果没有行,则当前代码将跳过
foreach
的正文
foreach (DataRow dr_art_custsuply in ds.Tables["CustomerSupplier"].Rows)
该行将转到foreach
的末尾,如果没有行,则不会执行正文中的任何代码
更新:
您的问题并不完全清楚,但您似乎需要检查表是否确实在数据集中。将以下if
包裹在foreach
周围,以测试其存在性:
if(ds.Tables["CustomerSupplier"] != null)
只需在您的foreach之前添加以下条件:
if(ds.Tables["CustomerSupplier"].Rows.Count > 0)
Oded的答案是正确的。如果您的表中没有行,则它甚至不会启动foreach循环。它会向我提供未设置为对象实例的错误对象引用。您确定数据集中有
CustomerSupplier
表吗?如果我编写此命令,我得到:foreach语句无法对“bool”类型的变量进行操作,因为“bool”不包含“GetEnumerator”的公共定义@Bruno,您可能想检查ds.Tables[“CustomerSupplier”]是否为空,并且您必须将if语句放在foreach的顶部,而不是放在foreach的内部。foreach完成了此操作,但我在执行时仍然有一个错误:对象引用未设置为对象的实例????好的,谢谢,解决方案是这样的:如果(ds.Tables[“CustomerSupplier”!=null),它可以工作!!!谢谢
if(ds.Tables["CustomerSupplier"] != null)
if(ds.Tables["CustomerSupplier"].Rows.Count > 0)