C#DataRowNullCheck我懂了:DataTabledtEntity=CreateDataTable();drEntity=dtEntity.NewRow();然后我将数据添加到行(或不)。一大堆代码,真不知道行里有没有什么。取决于输入(我从一些文件导入)。我想做的是:如果(drEntity`s每个单元格都不是空的){dtEntity.Rows.Add(drEntity);}else{//不要添加,将创建一个新的(drEntity=dtEntity.NewRow();)}有没有一些好的方法来检查DataRow的每个单元格是否为空?还是我先约个时间,一一去看看?一个简单的方法:boolAreAllColumnsEmpty(DataRowdr){if(dr==null){returntrue;}else{foreach(dr.ItemArray中的变量值){如果(值!=null){返回假;}}返回真;应该给你你想要的,并使它“好”(据我所知,框架中没有任何东西),你可以将其包装为扩展方法,然后你得到的代码是:if(datarow.AreAllColumnsEmpty()){}else{}我创建了一个名为IsEmpty的助手(在一个名为DataRowHelpers的静态类中,我知道它很有创意),如下所示:publicstaticboolIsEmpty(thisDataRowrow){returnrow==null||row.ItemArray.All(i=>iisDBNull);这里的其他答案都是正确的。我只是觉得我正在简洁地使用LinqtoObjects。顺便说一句,这与Excel解析结合使用效果很好,因为用户可以排列页面(数千行)而无需考虑它如何影响解析的数据。在同一个类中,我放置了我认为有用的任何其他助手,例如解析器,这样如果一个字段包含您知道应该是数字的文本,您可以流畅地解析它。对于这个想法的新手,这里有一个考虑到这一点的小版本(SO上的任何人,真的吗?不!):publicstaticboolIsEmpty(thisDataRowrow){returnrow==null||row.ItemArray.All(i=>i.IsNullEquivalent());}publicstaticboolIsNullEquivalent(thisobjectvalue){返回值==null||值为DBNull||string.IsNullOrWhiteSpace(value.ToString());现在您有了另一个有用的助手IsNullEquivalent,它可以像任何其他助手一样用于此上下文。如果您知道您的数据有这样的占位符,您可以扩展它以包括诸如“n/a”或“TBD”之类的东西。我更喜欢TommyCarlier的方法,但略有不同。foreach(row.Table.Columns中的DataColumn列)如果(!row.IsNull(列))返回false;返回真;我想这种方法看起来更简单明了。publicstaticboolAreAllCellsEmpty(DataRowrow){if(row==null)thrownewArgumentNullException("row");对于(inti=row.Table.Columns.Count-1;i>=0;i--)如果(!row.IsNull(i))返回false;返回真;我知道这已经被回答了,这是一个老问题,但这里有一个扩展方法来做同样的事情:如果(itemArray==null)返回真;返回itemArray.All(x=>string.IsNullOrWhiteSpace(x.ToString()));你可以这样使用它:if(dr.AreAllCellsEmpty())//等等你可以使用这个:if(drEntity.ItemArray.Where(c=>IsNotEmpty(c)).ToArray().Length==0){//Rowisempty}IsNotEmpty(cell)将是您自己的实现,它根据单元格中的数据类型检查数据是否为空。如果它是一个简单的字符串,它最终可能看起来像这样:if(drEntity.ItemArray.Where(c=>c!=null&&!c.Equals("")).ToArray().Length==0){//Rowisempty}else{//Rowisnotempty}不过,它基本上检查每个单元格是否为空,并让您知道该行中的所有单元格是否为空。DataTable.NewRow将每个字段初始化为:所以你应该检查:boolisDirty=false;对于(inti=0;i0)继续;如果(table.Columns[i].AutoIncrement)继续;if(row[i]!=table.Columns[i].DefaultValue)isDirty=true;我将把LINQ版本留作练习:)AFAIK,在框架中没有办法做到这一点。这样的东西就算框架支持了,基本上也是干同样的事情。这将查看DataRow中的每个单元格以查看它是否为空。我是这样做的:varlistOfRows=newList();foreach(varrowinresultTable.Rows.Cast()){varisEmpty=row.ItemArray.All(x=>x==null||(x!=null&&string.IsNullOrWhiteSpace(x.ToString())));如果(!isEmpty){listOfRows.Add(行);或许更好的解决办法是多加一个列,每列自动设置为1。每当有非空元素时,将其更改为0。那么以上就是C#学习教程:C#DataRownullcheckallthecontent分享出来,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——If(drEntitity.rows[i].coulmn[8]=1){dtEntity.Rows.Add(实体);}else{//不加,会新建一个(drEntity=dtEntity.NewRow();)}本文整理自网络,不代表立场,如涉及侵权,请点右联系管理员删除。如需转载请注明出处:
