Не удается неявно преобразовать тип 'System.Linq.IQueryable' в 'System.Collections.Generic.IList' - PullRequest
27 голосов
/ 04 августа 2010

У меня есть метод:

public DzieckoAndOpiekunCollection GetChildAndOpiekunByFirstnameLastname(string firstname, string lastname)
{
    DataTransfer.ChargeInSchoolEntities db = new DataTransfer.ChargeInSchoolEntities();
    DzieckoAndOpiekunCollection result = new DzieckoAndOpiekunCollection();
    if (firstname == null && lastname != null)
    {
        IList<DzieckoAndOpiekun> resultV = from p in db.Dziecko
                      where lastname == p.Nazwisko
                      **select** new DzieckoAndOpiekun(
                     p.Imie,
                     p.Nazwisko,
                     p.Opiekun.Imie,
                     p.Opiekun.Nazwisko)
                  ;
        result.AddRange(resultV);
    }
    return result;
}

и ошибка в выбранном месте:

Ошибка 1 Не удается неявно преобразовать тип 'System.Linq.IQueryable ' в 'System.Collections.Generic.IList '. Существует явное преобразование (вам не хватает приведения?)

Есть идеи, как решить мою проблему?

Ответы [ 6 ]

48 голосов
/ 04 августа 2010

Чтобы преобразовать IQuerable или IEnumerable в список, вы можете выполнить одно из следующих действий:

IQueryable<object> q = ...;
List<object> l = q.ToList();

или:

IQueryable<object> q = ...;
List<object> l = new List<object>(q);
10 голосов
/ 04 августа 2010

Вы можете заменить IList<DzieckoAndOpiekun> resultV на var resultV.

4 голосов
/ 13 декабря 2013

При использовании предложения where обязательно включите .First(), если вы не хотите использовать объект IQueryable.

3 голосов
/ 04 августа 2010

Попробуйте это ->

 new DzieckoAndOpiekun(
                         p.Imie,
                         p.Nazwisko,
                         p.Opiekun.Imie,
                         p.Opiekun.Nazwisko).ToList()
2 голосов
/ 04 августа 2010

Вы можете использовать метод .ToList () для преобразования результата IQueryable, возвращенного в IList, как показано ниже, после запроса linq.

   public DzieckoAndOpiekunCollection GetChildAndOpiekunByFirstnameLastname(string firstname, string lastname)
{
    DataTransfer.ChargeInSchoolEntities db = new DataTransfer.ChargeInSchoolEntities();
    DzieckoAndOpiekunCollection result = new DzieckoAndOpiekunCollection();
    if (firstname == null && lastname != null)
    {
        IList<DzieckoAndOpiekun> resultV = from p in db.Dziecko
                      where lastname == p.Nazwisko
                      **select** new DzieckoAndOpiekun(
                     p.Imie,
                     p.Nazwisko,
                     p.Opiekun.Imie,
                     p.Opiekun.Nazwisko).ToList()
                  ;
        result.AddRange(resultV);
    }
    return result;
}
1 голос
/ 10 июня 2015

Я решил эту проблему в EF по списку записей из db

ListOfObjectToBeOrder.OrderBy(x => x.columnName).ToList();
...