asp.net - LINQ to DataTable 简单快速

标签 asp.net linq datatable

我是 LINQ 新手,我想将 LINQ 查询转换为 DataTable

    DataClassesDataContext db = new DataClassesDataContext(MyConncectionString);
    IEnumerable<DataRow> qry = (IEnumerable<DataRow>)(from tbl in db.Table1.AsEnumerable()
                                                     select tbl);
    DataTable dt=new DataTable();
    qry.CopyToDataTable(dt, LoadOption.OverwriteChanges);
    GridView1.DataSource = dt;

但是我得到了错误

Unable to cast object of type 'WhereSelectEnumerableIterator to type 'System.Collections.Generic.IEnumerable`1[System.Data.DataRow]'.

谁能帮帮我

最佳答案

这些是基本概念:

.Net 框架附带了多个 LINQ 提供程序

  • LINQ to Objects。 System.Linq。它是 LINQ 核心,旨在与内存中的集合一起使用

  • LINQ to XML。 System.Xml.Linq 处理 XML 文档

  • LINQ 到数据集。使用 DataTable 和 DataSet 对象

  • LINQ to SQL。 System.Data.Linq 用于与SQL Server数据库一起工作

  • LINQ to Entities。 ( Entity Framework )用于处理多个数据库。它提供了更丰富的API

我认为您正在尝试做的是:

在从 LINQ to SQL 上下文返回的查询中,您想要返回 DataRow 对象的集合。

在 LINQ to SQL 对象和 DataRow 之间没有简单的转换,因此如果您坚持需要使用反射来获得所需的输出Fastest way to fill DataTable from LINQ query using DataContext

现在,如果您真的想使用 DataTable 对象,那么我的建议是使用强类型数据集。要创建一个,只需将一个新的 DataSet 对象添加到您的项目,然后从服务器资源管理器中拖动表,就像您对 LINQ to SQL 对象所做的那样

如果可能,请评估使用 DataRow 的决定,而不是返回由 LINQ To SQL 生成的对象,或者甚至更好地创建您的自定义 DTO 对象

关于您的代码,我看不出有任何理由尝试使用 Datatable 对象(除非您不打算发布额外的代码来证明这一决定的合理性)。如果您只想设置控件的 DataSource 属性,只需执行以下操作:

var q = from tbl in db.Table1
        select tbl;

this.myControl.DataSource = q;
this.myControl.DataBind();

如果需要,您可以将结果转换为匿名对象并将其用作DataSource:

var q = from tbl in db.Table1
        select new
        {
           MyNewProperty = tbl.ExistingProperty,
           AnotherProperty = tbl.MyCoolerProperty
        };

this.myControl.DataSource = q;
this.myControl.DataBind();

关于asp.net - LINQ to DataTable 简单快速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11491594/

相关文章:

c# - 写在ASP.NET响应流上的一些问题

C# Linq to SQL : How to express "CONVERT([...] AS INT)"?

linq - IList 与 IEnumerable : when they "executes" the LINQ query?

c# - LINQ group by 查询使用反射(reflect)的属性名称

javascript - 数据表固定 header 插件错误

python - Bokeh 数据表在行和网格图中重叠

asp.net - 为什么 en-IE 文化不给我格式字符串中的 AM PM?

asp.net - ASP核心: How to set httpContext.用户?

c# - 抛出 HttpException 总是发回 HTTP 500 错误?

java - 带有 PrimeFaces : Incell-Editing, 的 JSF 2 RowEditEvent 参数中没有更新的对象