0

我遇到了模型的返回类型 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<> 类型?

谢谢

4

2 回答 2

1

似乎_ajAentities.Photosis 类型IEnumerable<Models.DB.Photo>,但您正试图IEnumerable<Photoview>从您的方法返回 an 。

因此,第一种可能性是修复您的返回类型以匹配您的数据库实体:

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来执行域模型和视图模型之间的映射。

于 2012-05-27T06:56:27.047 回答
0

尝试这个:

var a = (IEnumerable<Object>)
        from o in _ajAentities.Photos
        select o;

它将从 Linq 返回的IQueryableIEnumerable不要使用,.ToList()因为您正在将其转换为List<object>类型集合。只需返回变量。

于 2020-07-07T02:06:12.640 回答