Ответ 1
Чтобы преобразовать IQuerable
или IEnumerable
в список, вы можете выполнить одно из следующих действий:
IQueryable<object> q = ...;
List<object> l = q.ToList();
или
IQueryable<object> q = ...;
List<object> l = new List<object>(q);
У меня есть метод:
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 > '. Явное преобразование существует (вы пропускаете листинг?)
Любая идея, как решить мою проблему?
Чтобы преобразовать IQuerable
или IEnumerable
в список, вы можете выполнить одно из следующих действий:
IQueryable<object> q = ...;
List<object> l = q.ToList();
или
IQueryable<object> q = ...;
List<object> l = new List<object>(q);
Вы можете заменить IList<DzieckoAndOpiekun> resultV
на var resultV
.
Попробуйте это →
new DzieckoAndOpiekun(
p.Imie,
p.Nazwisko,
p.Opiekun.Imie,
p.Opiekun.Nazwisko).ToList()
Если использование предложения where обязательно включает .First()
, если вы не хотите объект IQueryable.
Вы можете использовать метод 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;
}
Я решил эту проблему таким образом в EF в списке записей из db
ListOfObjectToBeOrder.OrderBy(x => x.columnName).ToList();