繁体   English   中英

从强类型数据集中返回一行

[英]Return a single row from a Strongly Typed Dataset

在我的C#ASP.Net项目中,我使用xsd数据集链接到我的数据库。 我想创建一个从强类型数据表返回一行的函数,但是在C#中这样做有点麻烦。 我以前在VB.Net中成功使用以下代码完成了此操作:

Public Function dr() As DataSet1.UsersRow
    Dim ta As New DataSet1TableAdapters.UsersTableAdapter
    Dim dt As DataSet1.UsersDataTable = ta.GetData
    Return dt.Rows(0)
End Function

我的代码的C#版本是:

public DataSet1.UsersRow dr()
{
    DataSet1TableAdapters.UsersTableAdapter ta = new DataSet1TableAdapters.UsersTableAdapter();
    DataSet1.UsersDataTable dt = ta.GetData;
    return dt.Rows(0);
}

我收到错误“无法将类型'System.Data.DataRow'隐式转换为'MyProject.DataSet1.UsersRow'。 存在显式转换(您是否缺少演员表?)

如何在C#中返回我的强类型行

您应该能够使用对其进行强类型化

dt[0];

解决方案是在返回行时显式转换Rows项:

public DataSet1.UsersRow dr()
{
    DataSet1TableAdapters.UsersTableAdapter ta = new DataSet1TableAdapters.UsersTableAdapter();
    DataSet1.UsersDataTable dt = ta.GetData();
    return (DataSet1.UsersRow)dt.Rows(0);
}

一种更有效的解决方案是按照SELECT TOP 1 ...的方式向tableadapter添加查询。 FROM用户,(或更一般而言,添加WHERE子句以返回所需的行。)这样,您就不会拉回整个表,而只是检索一行。

暂无
暂无

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

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