我正在尝试在域服务(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>
  • AsQueryable()之后调用ToList():
    ... as before ...
    .ToList().AsQueryable();
    

  • 请注意,在ToList调用中不需要type参数-无论如何编译器都会推断出该参数。

    关于c# - 无法将类型 'System.Collections.Generic.List<T>'隐式转换为 'System.Linq.IQueryable<T>',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10516086/

    10-14 02:42