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>、2 つの間で変換することはできません。同じ型を扱う必要があります。

于 2010-04-04T12:53:39.263 に答える