Как можно написать возвращаемое значение типа списка в Linq с Entity Framework? - PullRequest
1 голос
/ 04 апреля 2010

Как я могу вернуть List<personel> тип данных из процедуры ниже. Если я нажму F5, это выдаст мне эту ошибку:

Ошибка 1 Не удается неявно преобразовать тип 'System.Linq.IQueryable' в 'System.Collections.Generic.List. Явное преобразование существует (вы пропустили актерский состав?) C: \ Documents and Настройки \ yusufk \ Desktop \ EFTestSolutions \ WebApplicationTest1 \ WebApplicationTest1 \ Default.aspx.cs 101 61 WebApplicationTest1

Я думаю, что мне следует переставить или перекодировать "выберите новый {...

protected List<personel> GetPersonalsData2()
{
    List<personel> personeller;
    using (FirmaEntities firmactx = new FirmaEntities())
    {
       personeller = (from p in firmactx.Personals 
                      select new { p.ID, p.Name, p.SurName });
       return personeller.ToList();
    }
 }

 public class personel
 {
    public int ID { get; set; }
    public string Name { get; set; }
    public string SurName { get; set; }
 }

1 Ответ

4 голосов
/ 04 апреля 2010

Эта часть возвращает анонимный тип:

personeller = (from p in firmactx.Personals select new { p.ID, p.Name, p.SurName });
return personeller.ToList();

Это должно быть:

personeller = (from p in firmactx.Personals 
               select new personel { Id = p.ID, 
                                     Name = p.Name, 
                                     SurName = p.SurName }).ToList();

Или, если эта коллекция уже имеет тип personal, вы можете сделать это:

personeller = (from p in firmactx.Personals select p).ToList();

Или просто так:

personeller = firmactx.Personals.ToList();

В вашем опубликованном коде он пытается вернуть List<yourAnonymousType> (непосредственно из IQueryable, другого недопустимого приведения) вместо List<personal> и не может конвертировать между ними, вам нужно иметь дело с одним и тем же типом.

...