【问题标题】:Cannot implicitly convert type 'System.Linq.IQueryable<>' to 'System.Collections.Generic.List<>'无法将类型“System.Linq.IQueryable<>”隐式转换为“System.Collections.Generic.List<>”
【发布时间】:2015-11-06 14:41:57
【问题描述】:

我有这个动作:

public ActionResult Index(int? idCursos)
{
    var usuarios = db.Usuario.ToList();
    if(!(idCursos == null))
    {
        usuarios = from Usuario in db.Usuario
                                from Relaciones in db.Relaciones
                                where Relaciones.Cursos.idCurso == idCursos
                                select new
                                {
                                    Nombre = Usuario.Nombre,
                                    Apellido = Usuario.Apellido,
                                    Usuario.DNI,
                                };

    }
    return View(usuarios);
}

我收到了这个错误:

错误 1 ​​无法将类型 System.Linq.IQueryable&lt;AnonymousType#1&gt; 隐式转换为 System.Collections.Generic.List&lt;LibreriaEntidad.Usuario&gt;。存在显式转换(您是否缺少演员表?)

知道如何解决这个问题吗?

【问题讨论】:

  • 我已经尝试过了,我将查询名称更改为“查询”,然后写入,usuarios = query.ToList();但错误是一样的。 “错误 1 ​​无法将类型 'System.Collections.Generic.List' 隐式转换为 'System.Collections.Generic.List'”
  • 那是因为你的select new { },它引入了匿名类型。要么删除它,要么将查询存储到一个新变量中,然后将该变量返回到您的视图中。
  • 这就是我正在寻找的答案,谢谢,所以我应该选择新的 usuario?
  • 对不起,我看错了。您似乎想从此方法返回两种不同类型的结果,这是不可能的。如果用户通过idCursos,你到底想返回什么?
  • 一个适合“哪里”的Usuarios对象

标签: asp.net-mvc


【解决方案1】:

也许这会让你更亲近.. 我不确定你是如何建立关系的,但如果 Usuario &gt;&gt; Relaciones &gt;&gt; Cursos 那么你可以做这样的事情..

public ActionResult Index(int? idCursos)
{
    var model = db.Usuario;
    if (idCursos.HasValue)
    {
        model = model.Where(a => a.Relaciones.Any(a => a.Cursos.idCurso == idCursos));
    }
    return View(model.ToList());
}

【讨论】:

    【解决方案2】:

    我相信你只需要在你的 LINQ 查询上调用 .ToList()

            usuarios = from Usuario in db.Usuario
                                         from Relaciones in db.Relaciones
                                         where Relaciones.Cursos.idCurso == idCursos
                                         select new
                                         {
                                             Nombre = Usuario.Nombre,
                                             Apellido = Usuario.Apellido,
                                             Usuario.DNI,
                                         }.ToList();
    

    【讨论】:

    • 不,这将给出“无法将类型 System.Collections.Generic.List 隐式转换为 System.Collections.Generic.List。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2011-03-25
    • 1970-01-01
    相关资源
    最近更新 更多