I am trying to create a query in my domain service (VS 2010 Silverlight Business Application) that returns the results from inspection readings that came out as a specific value, my database is set up as:
Locations
a) Inspections
b) InspectionItems
c) InspectionReadings
a) Areas
b) Inspections
c) InspectionItems
d) InspectionReadings
So, as you can see, there are inspection readings for locations under areas and locations. I have a POCO called name StatusList:
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; }
}
which I am using to return the results of the query:
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;
}
unfortunately, it's returning the error in the title and I have no idea why as the list is clearly a list item and i have converted the results
.ToList<LocationStatusList>
The problem is precisely because you've called ToList()
. You've declared that you're returning IQueryable<LocationStatusList>
, and List<T>
doesn't implement IQueryable<T>
.
Options (pick one):
ToList
callIEnumerable<LocationStatusList>
, IList<LocationStatusList>
or possibly List<LocationStatusList>
Call AsQueryable()
after ToList()
:
... as before ...
.ToList().AsQueryable();
Note that you don't need the type argument in the ToList
call - it's the same one that the compiler would infer anyway.