由于脏数据,我有一个可能包含null或空单元格的数据表。在这种情况下,无法清除数据。
因为我需要每行一个单数字符串输出(行数可能会改变,列数是一个常量(3)),我需要解决每个单独的单元格,以告诉方法如果要做一个细胞恰好是空的。我最初尝试过以下内容:
数据集:con.dSet list<>:官员
bool notNull(var cell)
{
if (cell != null)
{
return true;
}
else
{
return false;
}
}
void hereAreAllThePeople()
{
if (con.dSet != null)
{
foreach (DataRow row in dSet.Tables[0].Rows)
{
string str = string.Empty;
foreach (DataColumn col in row)
{
if (notNull)
{
str += col.ToString();
}
else if (!notNull)
{
str += "";
}
}
Officers.Add(str);
}
}
}
它很丑陋,因为row
不可枚举而失败。我怎么得到这个?
答案 0 :(得分:0)
是的,这是非常古怪的代码,但我想你可以这样做:
foreach (DataColumn col in dSet.Tables[0].Columns)
{
if (notNull)
{
str += row[col].ToString();
}
else if (!notNull)
{
str += "";
}
}
,知道你有三个领域,
for (int i = 0; i <3; i++)
{
if (notNull)
{
str += row[i].ToString();
}
else if (!notNull)
{
str += "";
}
}
已编辑(因为我因某些原因无法发表评论) 好吧,我不确定你想要的是什么,但是我没有看到在任何地方都设置了notNull变量,所以我不确定你是如何使用它的。根据您提出的问题的既定目标,这将按预期运作:
void hereAreAllThePeople()
{
if (con.dSet != null)
{
foreach (DataRow row in dSet.Tables[0].Rows)
{
Officers.Add(string.Join("", row.ItemArray.Select(p => (p == null) ? "": p.ToString()).ToArray()));
}
}
}