不包含"添加"的定义

 双鱼獒主 发布于 2023-02-13 14:14

我试图像在这个线程中做同样的事情,但我得到错误:

"System.Collections.Generic.IEnumerable"不包含"添加",并没有扩展方法"添加"接受型"System.Collections.Generic.IEnumerable"的第一个参数的定义可以找到(是否缺少using指令或汇编参考?)

这是我的代码:

[HttpPost]
public ActionResult Create(ANIME anime)
{
    var db = new MainDatabaseEntities();
    var newanime = new ANIME
    {
        ID_AN = anime.ID_AN,
        TITLE_OR = anime.TITLE_OR,
        TITLE_EN = anime.TITLE_EN,
        GENRES = new List()
    };

    foreach (var selectedAnime in anime.GENRES.Where(c => c.isSelected))
    {
        var genre = new GENRES { ID_GE = selectedAnime.ID_GE };
        db.GENRES.Attach(genre);
        newanime.GENRES.Add(genre); <--- this is the error line
    }

    db.ANIME.Add(newanime);
    db.SaveChanges();
    return RedirectToAction("Index");
}

ANIME:

public partial class ANIME
{
    public int ID_AN { get; set; }
    public string TITLE_OR { get; set; }
    public string TITLE_EN { get; set; }

    public virtual IEnumerable GENRES { get; set; }
}

流派:

public partial class GENRES
{
    public int ID_GE { get; set; }
    public string GENRE { get; set; }
    public bool isSelected { get; set; }
    public virtual ICollection ANIME { get; set; }
}

错误在于行newanime.GENRES.Add(genre)HttpPost.我添加using System.Linq到所有型号和控制器,但它没有帮助.任何想法如何解决这个问题?

编辑:

修复后,出现了新的错误.我认为这与上面的内容无关,但我不想发送不必要的线程.

错误信息:

无法在LINQ to Entities查询中构造实体或复杂类型"MainDatabaseModel.GENRES".

相关代码:

public ActionResult Create()
{
    var db = new MainDatabaseEntities();
    var viewModel = new ANIME
    {
        GENRES = db.GENRES.Select(c => new GENRES
        {
            ID_GE = c.ID_GE,
            GENRE = c.GENRE,
            isSelected = false
        }).ToList()
    };
    return View(viewModel);       
}

Alberto Sola.. 8

您有一个IEnumerable属性,您正在使用List进行初始化.List类实现IEnumerable接口.

当你调用这样的东西时:

IEnumerable myList = new List();

你说你想为你的对象提供IEnumerableList类中继承的接口的功能.在这种情况下,该方法Add不是IEnumerable接口的一部分,因为它只是List类的一个方法,并且您有该异常.

你有那么改变你的属性的类型,从IEnumerableIList(约IList的更多信息点击这里).这样,Add不会抛出有关方法的异常.

2 个回答
  • 试试这个:

    public partial class ANIME
    {
    
        public int ID_AN { get; set; }
        public string TITLE_OR { get; set; }
        public string TITLE_EN { get; set; }
    
        public virtual ICollection<GENRES> GENRES { get; set; } // Use ICollection here
    }
    

    2023-02-13 14:16 回答
  • 您有一个IEnumerable属性,您正在使用List进行初始化.List类实现IEnumerable接口.

    当你调用这样的东西时:

    IEnumerable myList = new List<MyType>();
    

    你说你想为你的对象提供IEnumerableList类中继承的接口的功能.在这种情况下,该方法Add不是IEnumerable接口的一部分,因为它只是List类的一个方法,并且您有该异常.

    你有那么改变你的属性的类型,从IEnumerable<YourType>IList<YourType>(约IList的更多信息点击这里).这样,Add不会抛出有关方法的异常.

    2023-02-13 14:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有