Вопрос по visual-studio-2010, c# – Не удается неявно преобразовать тип 'System.Collections.Generic.List <T>' в 'System.Linq.IQueryable <T>'

7

Я пытаюсь создать запрос в моей доменной службе (VS 2010 Silverlight Business Application), который возвращает результаты контрольных чтений, которые были получены в качестве определенного значения, моя база данных настроена следующим образом:

<code>Locations
  a) Inspections
     b) InspectionItems
        c) InspectionReadings       
  a) Areas
     b) Inspections
        c) InspectionItems
           d) InspectionReadings
</code>

Итак, как вы можете видеть, есть контрольные показания для мест под областями и местами. У меня есть POCO с именем nameListList:

<code>    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; }
    }
</code>

который я использую для возврата результатов запроса:

<code>    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;              
    }
</code>

к сожалению, он возвращает ошибку в заголовке, и я понятия не имею, почему, поскольку список явно является элементом списка, и я преобразовал результаты

<code>.ToList<LocationStatusList>
</code>
Это LINQ to Entitites - ошибочно извините! xhedgepigx
Зачем вам возвращатьIQueryable вGetLocationStatus? IQueryable (неофициально говоря) используется для представления перечисляемых вещей в отдаленных местах. Вы создали локальный список как ваш результат. Это простоIEnumerable. phg
Это LINQ to SQL или LINQ to Enities? Похоже, последний для меня. Danny Varod

Ваш Ответ

1   ответ
21

because ты звонилToList(), Вы заявили, что возвращаетесьIQueryable<LocationStatusList>, а такжеList<T> не реализуетIQueryable<T>.

Варианты (выберите один):

Remove the ToList call Change the return type to IEnumerable<LocationStatusList>, IList<LocationStatusList> or possibly List<LocationStatusList>

Call AsQueryable() after ToList():

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

Обратите внимание, что вам не нужен аргумент типа вToList call - это то же самое, что компилятор все равно выведет.

Я пришел к такому выводу непосредственно перед тем, как прочесть этот пост! Спасибо - ваш ответ объясняет, почему я ошибся в первую очередь. Я не уверен, почему у меня был ToList (). xhedgepigx

Похожие вопросы