1

如何List<personel>从以下过程返回数据类型。如果我按 F5,它会给我这个错误:

错误 1 ​​无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generic.List”。存在显式转换(您是否缺少演员表?) C:\Documents and Settings\yusufk\Desktop\EFTestSolutions\WebApplicationTest1\WebApplicationTest1\Default.aspx.cs 101 61 WebApplicationTest1

我认为我应该重新排列或重新编码“select new {...”?

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; }
 }
4

1 回答 1

4

这部分返回一个匿名类型:

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>并且无法在两者之间进行转换,您需要处理相同的类型。

于 2010-04-04T12:53:39.263 回答