【问题标题】:Determine if Rows if returned确定是否返回行
【发布时间】:2013-10-09 18:55:02
【问题描述】:

我有一个函数,它根据某列中的某个值从数据表中返回单个数据行。如果该值不产生一行怎么办,我如何通过使用空行来确定呢?

即,如果我有一个查询返回一个有 0 行的表,我可以说

         if(table.rows.count == 0)  
          { 
            do stuff
          }

但我做不到

        if(row.columns.count)
         {
           do stuff
         }

我试过 dbnull 和 row.haserrors 但这不是我要找的。我想测试该行,因为如果它确实有值,我需要使用它

我将数据表传递给函数。然后循环查找特定字段上的特定值。如果我找到它,我分配该行并返回它。否则它只返回一行

所以我得到了 Dim myRow 作为 DataRow

循环 如果找到值,MyRow = thisRow 下一个

返回我的行

(对不起是vb)

【问题讨论】:

  • 但是你如何分配 row这里?
  • 您是如何获取数据的?如果您使用 DataReader,确定是否有任何返回的行非常容易。
  • 您的第一个条件有什么问题? if (table.Rows.Count == 0) ?
  • 您确实意识到您没有将columns.count 与任何东西进行比较,对吧?也许== 0> 0 会有所帮助。你有什么例外吗?
  • 对不起,我只是输入这个而不是显示我的代码,我理解你对列数的担忧,但那根本不存在

标签: c# sql vb.net datatable datarow


【解决方案1】:

检查DataRow 是否为null,如果不是,则遍历ItemArray 并查看是否有任何列有数据,如下所示:

// Assume it is empty
bool isRowEmpty = true;

if (row != null)
{
    foreach(var columnValue in row.ItemArray)
    {
        if (columnValue != null)
        {
            isRowEmpty = false;
            break;
        }
    }
}

这是 VB.NET 版本:

' Assume it is empty
Dim isRowEmpty As Boolean = True

If row IsNot Nothing Then
    For Each columnValue As var In row.ItemArray
        If columnValue IsNot Nothing Then
            isRowEmpty = False
            Exit For
        End If
    Next
End If

【讨论】:

  • 当我尝试查看该行是否为空时,智能感知不喜欢它。只让我将它与可为空的进行比较,即使那样它也会给出错误
  • rowDataRow 还是别的什么?
  • 使用与@Karl Anderson 类似的逻辑,您可以返回找到的行的行索引。如果未找到匹配项,则返回 -1。
  • 我无法返回 int 或 bool,我需要返回一行。但尽管如此,我会看看 IsDbNull(myRow) 是否有效,如果没有,我会尝试 row.table.count。然而,karl 的 vb 版本看起来应该可以工作。它是一个数据行。我不是最好的 vb,这没什么奇怪
  • @user2070677 - 如果您发布您的实际代码而不是伪代码(包括返回 DataRow 对象的函数)会有所帮助。
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 2020-11-17
  • 2012-11-01
  • 2023-03-14
  • 1970-01-01
  • 2016-09-11
相关资源
最近更新 更多