我遇到了返回类型IEnumerable<>的问题我试图更好地理解的模型:
我有一个模型视图:
public class Photoview
{
public int IdPhoto { get; set; }
public DateTime Date { get; set; }
public string Nom { get; set; }
public int Category { get; set; }
public string Lien { get; set; }
public bool Actif { get; set; }
public string Description { get; set; }
}
和一个从数据库中获取数据的模型:
public IEnumerable<Photoview> GetAllPhotos()
{
var a = from o in _ajAentities.Photos
select o;
return a.ToList();
}
但是,我遇到编译错误:无法将Generic.List类型转换为
数据库表是:
id_photo int Unchecked
date smalldatetime Checked
nom nvarchar(250) Checked
categorie int Checked
lien nvarchar(250) Checked
actif bit Checked
description nvarchar(800) Checked
我的问题是:如何将GetAllPhotos()的Linq查询作为IEnumerable&lt;&gt;返回?输入?
由于
答案 0 :(得分:1)
似乎_ajAentities.Photos
的类型为IEnumerable<Models.DB.Photo>
,但您尝试从方法中返回IEnumerable<Photoview>
。
因此,第一种可能性是修复您的返回类型以匹配数据库实体的类型:
public IEnumerable<Photo> GetAllPhotos()
{
var a =
from o in _ajAentities.Photos
select o;
return a.ToList();
}
第二种可能性是在两种类型之间进行映射:
public IEnumerable<Photoview> GetAllPhotos()
{
var a =
from o in _ajAentities.Photos
select new Photoview
{
IdPhoto = o.Id,
Date = o.Date,
Nom = o.Nom,
....
};
return a.ToList();
}
您还可以查看AutoMapper来执行域模型与视图模型之间的映射。
答案 1 :(得分:0)
尝试一下:
var a = (IEnumerable<Object>)
from o in _ajAentities.Photos
select o;
它将IQueriable转换为从Linq返回的IEnumerable。不要使用.ToList(),因为您要将其转换为List类型集合。只需返回变量即可。