我懂了:
DataTable dtEntity = CreateDataTable();
drEntity = dtEntity.NewRow();
Run Code Online (Sandbox Code Playgroud)
然后我将数据添加到行(或不).很多代码,真的不知道行内是否有任何东西.取决于输入(我从一些文件导入).我想做点什么:
if (drEntity`s EVERY CELL IS NOT EMPTY)
{
dtEntity.Rows.Add(drEntity);
}
else
{
//don't add, will create a new one (drEntity = dtEntity.NewRow();)
}
Run Code Online (Sandbox Code Playgroud)
有没有一些很好的方法来检查DataRow的每个单元格是否为空?或者我应该预先,并逐一检查它们?
Rob*_*Rob 25
一种简单的方法:
bool AreAllColumnsEmpty(DataRow dr)
{
if (dr == null)
{
return true;
}
else
{
foreach(var value in dr.ItemArray)
{
if (value != null)
{
return false;
}
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
应该给你你想要的东西,并使它"好"(因为在框架中没有任何我知道的东西),你可以把它作为一个扩展方法包装起来,然后你得到的代码就是:
if (datarow.AreAllColumnsEmpty())
{
}
else
{
}
Run Code Online (Sandbox Code Playgroud)
Jac*_*nes 11
我创建了一个帮助程序(在一个静态类中,我称之为IsEmpty创造性,我知道)IsNullEquivalent,如下所示:
public static bool IsEmpty(this DataRow row)
{
return row == null || row.ItemArray.All(i => i is DBNull);
}
Run Code Online (Sandbox Code Playgroud)
这里的其他答案都是正确的.我只是觉得我简洁地使用了Linq to Objects.顺便说一句,这与Excel解析结合使用非常有用,因为用户可能会在页面上的一行(数千行)处理,而不考虑它如何影响解析数据.
在同一个类中,我把任何其他我发现有用的帮助器,比如解析器,这样如果字段包含你知道的文本应该是一个数字,你可以流利地解析它.对于任何刚接触这个想法的人来说,这个小小 (SO的任何人,真的吗?不!)
考虑到这一点,这是一个增强版本:
public static bool IsEmpty(this DataRow row)
{
return row == null || row.ItemArray.All(i => i.IsNullEquivalent());
}
public static bool IsNullEquivalent(this object value)
{
return value == null
|| value is DBNull
|| string.IsNullOrWhiteSpace(value.ToString());
}
Run Code Online (Sandbox Code Playgroud)
现在你有另一个有用的帮助器,"n/a"它可以在这个上下文中使用,也可以用于任何其他帮助器.您可以扩展它以包含类似的内容,"TBD"或者IsEmpty如果您知道您的数据具有类似的占位符.
我更喜欢Tommy Carlier的方法,但稍微改变一下.
foreach (DataColumn column in row.Table.Columns)
if (!row.IsNull(column))
return false;
return true;
Run Code Online (Sandbox Code Playgroud)
我想这种方法看起来更简单明了.
public static bool AreAllCellsEmpty(DataRow row)
{
if (row == null) throw new ArgumentNullException("row");
for (int i = row.Table.Columns.Count - 1; i >= 0; i--)
if (!row.IsNull(i))
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106905 次 |
| 最近记录: |