通过linq填充数据表

时间:2015-10-22 11:07:46

标签: c# mysql linq crystal-reports

我是linq的新手,并试图理解它。我试图通过linq填充数据表,但在sql命令适配器中收到错误。 以下是我使用的代码,不知道我是否以正确的方式使用它!

这是我得到的错误:

  

错误7无法隐式转换类型   ' System.Linq.IQueryable'至   MySql.Data.MySqlClient.MySqlCommand'

{
        northwindEntities1 nw = new northwindEntities1();
        var query = from c in nw.customers
            join o in nw.orders on c.CustomerID equals o.CustomerID // first join
            join od in nw.orderdetails on o.OrderID equals od.OrderID    // second join
            join p in nw.products on od.ProductID equals p.ProductID    // third join
            where c.ContactName.StartsWith("Maria Anders")
            select new {
                o.CustomerID,
                c.ContactName,
                o.OrderID,
                p.ProductID,
                p.ProductName,
                od.Quantity,
                p.UnitPrice
            };
        MySqlDataAdapter da = new MySqlDataAdapter();
        da.SelectCommand = query;
        DataTable datatable = new DataTable();
        da.Fill(datatable); // getting value according to imageID and fill dataset

        ReportDocument crystalReport = new ReportDocument(); // creating object of crystal report
        crystalReport.Load(Server.MapPath("~/custreport.rpt")); // path of report 
        crystalReport.SetDataSource(datatable); // binding datatable
        CrystalReportViewer1.ReportSource = crystalReport;

        crystalReport.ExportToHttpResponse
        (CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, Response, true, "PersonDetails");
}

1 个答案:

答案 0 :(得分:1)

SQL查询与LINQ查询不同,它们完全不同。

LINQ本身是一组查询语言功能,用于查询不同的数据源,但它与SQL查询不同。你错过了解。因此,您无法将其传递给SQL查询。

您无法将来自变量System.Linq.IQueryable的{​​{1}}传递给MysqLCommand CommandText Property,您应该传递一个字符串,该字符串应该是MysQL查询而不是LinQ查询。像这样:

linq