【问题标题】:cast is not a member of system.data.rowcollectioncast 不是 system.data.rowcollection 的成员
【发布时间】:2013-09-25 11:55:51
【问题描述】:

我想从数据表中选择前 5 行。

为此,我使用了以下查询:

DTResult
    .Rows
    .Cast(Of System.Data.DataRow)()
    .Take(Integer.Parse(ddlPage.SelectedValue.ToString()))

但它给了我以下错误:

cast is not a member of system.data.rowcollection

我删除了演员表并使它像:

DTResult.AsEnumerable.Take(Integer.Parse(ddlPage.SelectedValue.ToString()))

但在这两种情况下它都会给我错误,而且:

它不是自动建议.Take()

请帮帮我。

【问题讨论】:

  • @Shreyas 的那篇文章只有我在上面进行了查询,但我遇到了问题
  • 我认为 DtResult 是 DataTable 然后使用 DTResult.AsEnumerable().Take(int.Parse(ddlPage.SelectedValue.ToString()));而不是 DTResult.AsEnumerable.Take(Integer.Parse(ddlPage.SelectedValue.ToString()))

标签: c# asp.net .net vb.net visual-studio-2008


【解决方案1】:

在框架 3.5 中,

dt.Rows.Cast<System.Data.DataRow>().Take(5)

否则使用以下代码

 public DataTable  SelectTopDataRow(DataTable dt, int count)
{
 DataTable dtn = dt.Clone();
 for (int i = 0; i < count; i++)
 {
     dtn.ImportRow(dt.Rows[i]);
 }

 return dtn;
}

【讨论】:

    【解决方案2】:

    要使用 LINQ(例如 Take()Cast())和 DataTableExtensions(例如 dataTable.AsEnumerable()),请确保您引用了正确的程序集并导入了正确的命名空间。

    对于 LINQ,程序集是 System.Core.dll,对于 DataTableExtensions,程序集是 System.Data.DataSetExtensions.dll

    您需要的命名空间是System.LinqSystem.Data

    【讨论】:

    • 是的,System.Linq 我没有导入,这就是问题..thanx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2014-10-30
    • 2017-08-21
    • 2019-07-30
    • 2019-05-18
    • 2017-07-13
    相关资源
    最近更新 更多