24

DataRow を読み取るコードを作成する方法はありますが、DataRow にファイルが存在しない場合は、次のようにスキップして先に進みます。

string BarcodeIssueUnit;
if (dr_art_line["BarcodeIssueUnit"].ToString().Length <= 0)
{
    BarcodeIssueUnit = "";
}
else
{
    BarcodeIssueUnit = dr_art_line["BarcodeIssueUnit"].ToString();
}

現在、列BarcodeIssueUnitはテーブルに属することができますが、場合によっては、その列がテーブルに存在しません。そこになくて読んだ場合、次のエラーが発生します。

System.ArgumentException: Column `BarcodeIssueUnit` 
does not belong to table Line.

列が正常かどうかを確認したいだけです。値を確認してください。そうでない場合は、その部分をスキップして続行してください。

4

3 に答える 3

50

を使用して列名を確認しますDataRow.Table.Columns。変換値が他にある場合は出てきます。

BarcodeIssueUnit = dr_art_line.Table.Columns.Contains("BarcodeIssueUnit")?
                   dr_art_line["BarcodeIssueUnit"].ToString(): "";
于 2012-05-03T13:14:09.450 に答える
5
if(dr_art_line.Table.Columns.Contains("BarcodeIssueUnit"))
{
    BarcodeIssueUnit = dr_art_line.Field<String>("BarcodeIssueUnit");
}
else
{
    BarcodeIssueUnit = String.Empty;
}

http://msdn.microsoft.com/en-us/library/system.data.datacolumncollection.contains.aspx

于 2012-05-03T13:16:29.873 に答える
1

現在の行のテーブル スキームに特定の列が含まれているかどうかを確認できます。

 if (!dr_art_line.Table.Columns.Contains("BarcodeIssueUnit"))
 {
     BarcodeIssueUnit = "";
 }
 else
 {
      BarcodeIssueUnit = dr_art_line["BarcodeIssueUnit"].ToString();
 }
于 2012-05-03T13:15:01.830 に答える