我在我继承的代码中发现了这一点,事实上它是 Linq 而我以前没有 Linq-ed。我看过一些例子,但我想这不是 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 在循环中为空: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);
}