从强类型数据集返回单行

时间:2012-10-28 20:47:33

标签: c# asp.net 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#

中返回强类型行

3 个答案:

答案 0 :(得分:4)

您应该可以使用

强力输入

dt[0];

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

更有效的解决方案是沿着SELECT TOP 1 ...的行向tableadapter添加一个查询。 FROM用户(或者更一般地,添加WHERE子句以返回所需的行。) 这样你就不会把整个表拉回去只检索一行。