繁体   English   中英

无法隐式转换类型&#39;System.Collections.Generic.List <T> &#39;to&#39;System.Linq.IQueryable <T> “

[英]Cannot implicitly convert type 'System.Collections.Generic.List<T>' to 'System.Linq.IQueryable<T>'

我正在尝试在我的域服务(VS 2010 Silverlight业务应用程序)中创建一个查询,该查询返回作为特定值出现的检查读数的结果,我的数据库设置为:

Locations
  a) Inspections
     b) InspectionItems
        c) InspectionReadings       
  a) Areas
     b) Inspections
        c) InspectionItems
           d) InspectionReadings

因此,正如您所看到的,区域和位置下的位置有检查读数。 我有一个名为StatusList的POCO:

    public class StatusList
    {
        [Key]
        [Editable(false)]
        public Guid ID { get; set; }

        public string LocationName { get; set; }

        public DateTime LastInspectionDate { get; set; }

        public string Status { get; set; }
    }

我用它来返回查询的结果:

    public IQueryable<StatusList> GetLocationStatus()
    {
        var status = (from location in this.ObjectContext.Locations
                      where location.InspectionReadings.Status == value
                      orderby a.DateTaken                          
                      select new LocationStatusList()
                      {
                          ID = a.ID,
                          LocationName = d.Name,                              
                      }).ToList<StatusList>();
        return status;              
    }

不幸的是,它返回标题中的错误,我不知道为什么列表显然是一个列表项,我已经转换了结果

.ToList<LocationStatusList>

问题正是因为你调用了ToList() 您已声明要返回IQueryable<LocationStatusList> ,而List<T>未实现IQueryable<T>

选项(选择一个):

  • 删除ToList调用
  • 将返回类型更改为IEnumerable<LocationStatusList>IList<LocationStatusList>或可能List<LocationStatusList>
  • ToList()之后调用AsQueryable() ToList()

     ... as before ... .ToList().AsQueryable(); 

请注意,在ToList调用中不需要type参数 - 它与编译器推断的相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM