当我放置 Select new 时,Linq 查询在 EntityDataSource1_QueryCreated 事件上给出异常;
Posted
技术标签:
【中文标题】当我放置 Select new 时,Linq 查询在 EntityDataSource1_QueryCreated 事件上给出异常;【英文标题】:Linq query giving exception on EntityDataSource1_QueryCreated Event when I put Select new;当我放置 Select new 时,Linq 查询在 EntityDataSource1_QueryCreated 事件上给出异常; 【发布时间】:2016-06-21 01:59:57 【问题描述】:我有实体数据源,我在其上使用查询创建的事件来获取总量,但是当我绑定 gridview 时它给出了异常
意外结果类型的 ObjectQuery 实例 'f__AnonymousType3`5' 在 QueryCreated 中分配给 Query 事件。与“购买”兼容的结果类型的 ObjectQuery 是 预计。
DateTime dt = DateTime.Now.AddDays(-1);
int ids=DML.getid(txtpartyname.Text);
var pur = e.Query.Cast<purchase>();
e.Query = from p in pur
where p.InvoiceNo == txtinvoice.Text && p.InvoiceDate > dt
orderby p.id descending
select new
p.Amount,
p.category,
p.description,
p.qty,
Total=p.qty*p.Amount
;
【问题讨论】:
请阅读How to create a Minimal, Complete, and Verifiable example,向我们提供有关您的代码以及您迄今为止尝试过的更多信息。 【参考方案1】:在绑定到 Gridview 之前将查询转换为 ToList()。
var pur = e.Query.Cast<purchase>();
var gridViewList = (from p in pur
where p.InvoiceNo == txtinvoice.Text && p.InvoiceDate > dt
orderby p.id descending
select new
p.Amount,
p.category,
p.description,
p.qty,
Total=p.qty*p.Amount
).ToList();
【讨论】:
您不能将 Anonymous 类型转换为 list 。不错的尝试 当然可以。这可能是因为您错误地将其分配给 e.Query。检查更新答案,您可以将该新变量绑定到您的网格视图。 错误 28 无法将类型“System.Collections.Generic.List”隐式转换为“System.Linq.IQueryable”。存在显式转换(您是否缺少演员表?) 不要将其分配给 e.Query。检查我更新的答案。 我在 EntityDataSource1_QueryCreated 事件中使用它,否则我在发布之前已经完成了它。它在查询创建事件上创建错误以上是关于当我放置 Select new 时,Linq 查询在 EntityDataSource1_QueryCreated 事件上给出异常;的主要内容,如果未能解决你的问题,请参考以下文章