Подтвердить что ты не робот

Невозможно неявно преобразовать тип 'System.Linq.IQueryable' в 'System.Collections.Generic.IList'

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

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 < WcfService1.DzieckoAndOpiekun > ' к 'System.Collections.Generic.IList < WcfService1.DzieckoAndOpiekun > '. Явное преобразование существует (вы пропускаете листинг?)

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

4b9b3361

Ответ 1

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

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

или

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

Ответ 2

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

Ответ 3

Попробуйте это →

 new DzieckoAndOpiekun(
                         p.Imie,
                         p.Nazwisko,
                         p.Opiekun.Imie,
                         p.Opiekun.Nazwisko).ToList()

Ответ 4

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

Ответ 5

Вы можете использовать метод 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;
}

Ответ 6

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

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