繁体   English   中英

从强类型数据集中获取一个元素

[英]Getting one element from a strongly typed data set

我今天刚学会使用强类型数据集和存储过程,除一个小问题外,一切进行得很顺利。考虑到datable具有以下事实,我可以找出如何从数据表中获取数据并对其进行实例化:只有一列其中一行。这是我到目前为止的内容:

var bookCountAdapter = new CountBooksTableAdapter();
var bookCountDataTable = new BooksAndCategoriesDataSet.CountBooksDataTable();
bookCountAdapter.Fill(bookCountDataTable);
int totalNumberOfBooks = 0;

foreach (BooksAndCategoriesDataSet.CountBooksRow row in bookCountDataTable) {
     totalNumberOfBooks = row.TotalNumberOfBooks;
}

return totalNumberOfBooks;

数据集使用的存储过程为:

CREATE PROCEDURE [dbo].[CountBooks]
AS

SELECT COUNT(*) FROM Books

现在我的当前代码可以正常工作了,问题在于我看不到对bookCountDataTable进行bookCountDataTable的原因,因为我只有一个int类型的元素,而我只想检索它。

有没有办法通过编写类似以下内容来获取该元素:

bookCountDataTable.TotalNumberOfBooks

因为我只有一个int类型的元素,所以我只想检索它。

然后使用索引访问它:

return bookCountDataTable[0].TotalNumberOfBooks

但是,您应该在之前检查的行数

从您的foreach循环中看起来,如果其中将有多行,则将返回最后一行的TotalNumberofBooks

我确定您可以执行以下操作:

if(bookCountDataTable.Rows.Count > 0)
{
     totalNumberOfBooks = Convert.ToInt32(bookCountDataTable.Rows[0]["TotalNumberOfBooks"]);
}

如果您确定只有一个元素,则可以执行以下操作

int totalNumberOfBooks = bookCountDataTable[0].TotalNumberOfBooks;

无论如何,您都不应该使用数据集来检索单个值。 有更好的方法来执行此操作,如SqlCommand.ExecuteScalar

即使在键入的数据集上,也可以使用设计视图上的向导来创建返回单个值的查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM