0

もう1つ質問があります

私はこの 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 に答える