嗨大家我在这个控制器代码的第11行有以下错误:
public JsonResult GetChartData_IncidentsBySiteStatus(string SiteTypeId, string searchTextSite, string StartDate, string EndDate)
{
if (searchTextSite == null)
searchTextSite = "";
DateTime startDate = DateTime.Parse(StartDate);
DateTime endDate = DateTime.Parse(EndDate);
var sitesQry = _db.Sites;
if (SiteTypeId != "-1")
sitesQry = sitesQry.Where(a => a.SiteTypeId.ToString() == SiteTypeId);
var qry = from i in _db.Incidents
join s in _db.Sites on i.SiteId equals s.SiteId
where s.SiteDescription.Contains(searchTextSite)
&& (i.Entered >= startDate && i.Entered <= endDate)
group s by s.SiteStatus.SiteStatusDescription + "[" + s.SiteTypeId.ToString() + "]"
into grp
select new
{
Site = grp.Key,
Count = grp.Count()
};
return Json(qry.ToList() , JsonRequestBehavior.AllowGet);
}
...........错误是:
错误7无法隐式转换类型 'System.Linq.IQueryable'来 'System.Data.Linq.Table'。显式转换 存在(你错过了演员吗?)C:\ Documents and Settings \ Administrator \ Desktop \ IRenewables_EMAS \ IRenewables_EMAS \ Controllers \ IncidentController.cs 69 28 Emas.Web
有人可以为此建议解决方法吗?
感谢
答案 0 :(得分:1)
您正尝试将base class实例分配给sub class实例。
而不是
var sitesQry = _db.Sites;
尝试使用
IQueryable<Site> sitesQry = _db.Sites;
答案 1 :(得分:0)
虽然@Eranga的解决方案可行,但我觉得有更多的选择和更好的解释。
首先,您无法分配值的原因是您尝试将接口分配和实现为具体类型。这是不可能的,因为你不知道什么可以实现该接口,这意味着它不能分配给具有具体类型的东西。
这有多种选择。您可以像@Eranga建议并创建一个新变量
IQueryable<Site> sitesQry = _db.Sites;
或者您可以调用Linq公开的。CopyToDataTable
扩展方法。
sitesQry = _db.Sites.CopyToDataTable();