1

在我的 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# 中返回强类型行

4

3 回答 3

4

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

dt[0];

于 2012-10-28T21:23:21.880 回答
2

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

public DataSet1.UsersRow dr()
{
    DataSet1TableAdapters.UsersTableAdapter ta = new DataSet1TableAdapters.UsersTableAdapter();
    DataSet1.UsersDataTable dt = ta.GetData();
    return (DataSet1.UsersRow)dt.Rows(0);
}
于 2012-10-28T20:47:33.017 回答
0

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

于 2013-01-05T20:32:35.680 回答