IEnumerable<> to IList<>
c#, ienumerable, linq
Solution
Your `select` statement returns an anonymous type: `new {c.RegionCode, c.RegionName}`
This can't be converted to `IRegion` - that would basically be Duck-typing, which C# doesn't support.
Your linq statement should return a type that implements `IRegion` - then your code should work.
However it shouldn't run - the `Cast<IRegion>` should throw a runtime exception.
Basically:
// this isn't anonymous, and should cast
public class MyRegion : IRegion {
public string RegionCode {get;set;}
public string RegionName {get;set;}
}
public IList<IRegion> GetRegionList(string countryCode)
{
var query = from c in Database.RegionDataSource
where (c.CountryCode == countryCode)
orderby c.Name
select new MyRegion {RegionCode = c.RegionCode, RegionName = c.RegionName};
return query.Cast<IRegion>().ToList();
}
Update
If the underlying Linq type implements `IRegion` this can be a lot simpler:
public IList<IRegion> GetRegionList(string countryCode)
{
var query =
from region in Database.RegionDataSource
where region.CountryCode == countryCode
orderby region.Name
select region;
return query.ToList();
}
Problem
I am using Linq to query my database and returning a generic IList. Whatever I tried I couldn't convert an IQueryable to an IList. Here is my code. I cannot write simpler than this and I don't understand why it is not working. ``` public IList<IRegion> GetRegionList(string countryCode) { var query = from c in Database.RegionDataSource where (c.CountryCode == countryCode) orderby c.Name select new {c.RegionCode, c.RegionName}; return query.Cast<IRegion>().ToList(); } ``` This returns an list with the right number of items but they are all empty Please help, I am bloqued with this for a couple of days now