【问题标题】:Return a single row from a Strongly Typed Dataset从强类型数据集中返回单行
【发布时间】:2012-10-18 06:01:36
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net strongly-typed-dataset


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您应该能够使用

      对其进行强类型化

      dt[0];

      【讨论】:

      • 是的,你的权利@PHeiberg,虽然不像你说的那样。这不是dt.Users[0]; 它只是dt[0];
      • 是的,我一定是走神了。我一定是觉得dt 是一个数据集。现在修正答案。
      【解决方案3】:

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

      【讨论】:

      • 你将如何向上述 sausagefingers 解决方案添加查询?
      • 在设计器中添加查询 - 右键单击​​表格适配器,选择添加,查询。
      猜你喜欢
      • 2011-03-08
      • 2010-09-12
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 2011-06-22
      • 2010-12-31
      • 2011-04-06
      • 2018-01-19
      相关资源
      最近更新 更多