在使用 select 语句后,我试图从 NpgsqlDataReader 获取行数。我试图检查的原因是在处理数据之前查看它是否有任何数据、单行或是否有多行。任何帮助将不胜感激。
这是在 C# .NET 4 中完成的
如果NpgsqlDataReader
继承自DbDataReader
其他 DataReaders,您可以检查
if (reader.HasRows) {...}
如果有任何结果。但我不认为你可以在不循环阅读器的情况下获得实际的行数......
通过一些谷歌搜索, NpgsqlDataReader似乎与 sqldatareader 非常相似。sqldatareader 没有内置的方法来获取行数。如果您想获得行数,您似乎必须循环并执行您自己的计数。
如果您只想快速预览。
1.) 没有结果 2.) 有一个结果 3.) 有多个结果
您可以使用 LIMITer 执行类似的 SQL 语句。这应该非常快。在执行之后,您将检索完整的数据。
例子:
select * from [TABLE] where [CONDITION] LIMIT 2
如果你得到 0 行,没有结果/如果你得到 1 行,一个结果 / 如果你得到 2 行,多个结果
我也想获得进度条的行数,但似乎我不能迭代两次对于仅仅显示进度来说是太多的工作;)
您可以创建一个代理类,它是NpgsqlDataReader
您重新实现迭代器(extends )的子类,如果您或者询问IEnumerable
,它将隐式地首先迭代最多 2 行- 然后它将直接从它的缓存中提供这 2行阅读其余部分。.Read()
.CountClass
这取决于您的用例,但在我的情况下,我将查询结果放入列表中,然后我可以计算列表中的项目,它可能不适用于您的用例,但您可以在将其列在列表中后的结果。