在我的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#
中返回强类型行答案 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子句以返回所需的行。) 这样你就不会把整个表拉回去只检索一行。