我是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");
}
答案 0 :(得分:1)
SQL查询与LINQ查询不同,它们完全不同。
LINQ本身是一组查询语言功能,用于查询不同的数据源,但它与SQL查询不同。你错过了解。因此,您无法将其传递给SQL查询。
您无法将来自变量System.Linq.IQueryable
的{{1}}传递给MysqLCommand CommandText Property,您应该传递一个字符串,该字符串应该是MysQL查询而不是LinQ查询。像这样:
linq