0

我还有一个问题

我有这个 foreach 声明:

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();
}

我想要做的是检查 ds.Tables["CustomerSupplier"].Rows 是否存在,如果不是每个都跳过这个,是否有通过代码,如果

(!ds.Tables.Contains("CustomerSupplier"))
{
}

但我得到一个错误,所以帮助帮助,如何写呢?

谢谢!

4

3 回答 3

5

如果没有行,您当前的代码将已经跳过foreach.

foreach (DataRow dr_art_custsuply in ds.Tables["CustomerSupplier"].Rows)

该行将转到末尾,foreach如果没有行,则不会执行正文中的任何代码。

更新:

您的问题并不完全清楚,但您似乎需要检查该是否真的在数据集中。将以下内容包裹if起来foreach以测试其是否存在:

if(ds.Tables["CustomerSupplier"] != null)
于 2012-05-04T09:02:01.833 回答
2

只需在循环之前添加此检查(如果没有行,它将不会进入 foreach)

if(ds.Tables["CustomerSupplier"].Rows.Count > 0)
于 2012-05-04T09:01:25.550 回答
0

只需在foreach之前添加以下条件:

if(ds.Tables["CustomerSupplier"].Rows.Count > 0)
于 2012-05-04T09:10:54.623 回答