当前位置:编程学习 > C#/ASP.NET >>

objectquery结果集处理问题!

string getQuotas = "SELECT a.jykdbt_name as jykdbt_Name,a.type as type,a.unit as unit,a.quota,CASE WHEN b.score is null THEN CAST(0 AS System.int32) ELSE CAST(b.score AS System.int32) END as score,CASE WHEN b.realscore IS NULL THEN CAST(0.00 AS System.Decimal) ELSE CAST(b.realscore AS System.Decimal) END as realscore,b.com_id as com_id FROM tb_jykdrbt as a LEFT OUTER JOIN (SELECT tcq.quoat_id,tcq.score,tcq.realscore,tcq.com_id FROM tb_com_quota as tcq WHERE tcq.com_id = " + companyId + ") as b ON a.jykdrbt_id = b.quoat_id WHERE a.TYPE = 1";

ObjectQuery<CompanyQuotas> query = ctx.CreateQuery<CompanyQuotas>(getQuotas);

List<CompanyQuotas> quotas = query.ToList<CompanyQuotas>();


ERROR:The specified cast from a materialized 'System.Data.Objects.MaterializedDataRecord' type to the 'JobDB.Model.CompanyQuotas' type is not valid.

'JobDB.Model.CompanyQuotas' 为自定义model类型。

求高人解决。

--------------------编程问答-------------------- 有可能是查询结果里有字段在 CompanyQuotas 里没有,或者类型不一致。
查下 CompanyQuotas 定义。 --------------------编程问答-------------------- List<CompanyQuotas> quotas = query.Select(q=>new CompanyQuotas{Id=q.Id,name=q.name}).ToList(); --------------------编程问答-------------------- 1.检查过,companyquotas model类里的属性名,属性类型,属性数量跟SQL语句返回的结果字段是一致的。  

2.List<CompanyQuotas> quotas = query.Select(q=>new CompanyQuotas{Id=q.Id,name=q.name}).ToList();  
Id,name是要指定到model中的属性吗?
如果是的话,Id=q.Id,name=q.name 到第二个q处,就已经取不到q了。

我是LINQ菜鸟。 希望得到完整解决方案!  谢谢· --------------------编程问答-------------------- 我遇到了类似的问题,求解 --------------------编程问答-------------------- 类型不匹配的,可以用2喽的方法让类型匹配 --------------------编程问答--------------------
引用 2 楼 q107770540 的回复:
List<CompanyQuotas> quotas = query.Select(q=>new CompanyQuotas{Id=q.Id,name=q.name}).ToList();
++. --------------------编程问答-------------------- 楼主写的SQL语句应该看作数据库的SQL语句,还是Entity SQL? 这两者应该不一样的吧?

最明显区别是Entity SQL通常用到Select VALUE c From ……

而且Entity SQL的查询对象是Model,而不是数据库。
补充:.NET技术 ,  LINQ
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,