私は継承したコードでこれに苦労しました。いくつかの例を見てきましたが、100% Linq の問題ではないと思いますが、おそらくそうです。
私はこの構造を持っています:
var categories = dtResults.AsEnumerable().Select(r => r["Cat"]).Distinct().ToList();
400 個のカテゴリ指定子を文字列として返します。はdtResults
、DataTable
クエリからデータを取得する です。
次に、 をループし、categories
最初の反復でUnable to cast object of type 'System.DBNull' to type 'System.String'.
エラーが発生します。これはcategory
、インデックス 0 がループ内で null であるためですforeach(string category in categories)
。
データを変更することはできませんが、空白を挿入することはできますが、どうすればよいですか?
更新 @flup が要求したループ:
foreach (string category in categories)
{
for (int i = 0; i < WucEntries2.Length; i++)
{
drOutput = dtOutput.NewRow();
drOutput["Category"] = category;
drOutput["SubCategory "] = subCategories[i];
drResults = dtResults.Select(String.Format("Category = '{0}' AND SubCategory = '{1}'", category, subCategories[i]));
if (drResults.Length > 0)
{
foreach (DataColumn column in dtResults.Columns)
{
drOutput[column.ColumnName] = drResults[0][column.ColumnName];
}
}
dtOutput.Rows.Add(drOutput);
}