gpt4 book ai didi

c# - LINQ - 无法隐式转换类型,存在显式转换

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:06 25 4
gpt4 key购买 nike

我是第一次在 C# 中使用查询,但我遇到了这个简单的问题。

这是我的 Controller

public ActionResult Index()
{
string campus = Request.Params["Campus"];

if (campus != null)
{
if (campus == "Alle")
{
return View(db.Teachers.ToList());
}
else
{
var teachers = (from t in db.Teachers
where t.Campus == campus
select t);

var Model = new ViewModel
{
Teachers = teachers.ToList(),
};
return View(Model);
}
}
else
{
return View(db.Teachers.ToList());
}
}

这是 ViewModel

的模型
public class ViewModel
{
public IQueryable<Teacher> Teachers { get; set; }
public IQueryable<Skill> Skills { get; set; }
}

但是,我无法使查询正常工作,它总是在下面给我一条红线

Teachers = teachers.ToList()

错误

Cannot implicity convert type 'System.Collections.Generic.List' to 'System.Linq.IQueryable'. An explicit conversion exsist.

我很确定这是一个非常简单的修复,但我已经尝试了很多方法,但我无法立即解决它。

如果你需要,这是我的教师类

public class Teacher
{
[key]
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Campus { get; set; }

public virtual List<Skill> Skills { get; set; }
}

最佳答案

问题在于:

Teachers = teachers.ToList()

尝试分配 List<Teacher>IQueryable<Teacher> .

我想你可能想要你的 ViewModel保存实际数据,而不是查询,因为您在创建后立即返回它们。这意味着不使用 IQueryable<T> ,它将保存延迟查询,您可以使用 List<Teacher> 存储查询的实际结果或 IList<Teacher> :

public class ViewModel
{
public IList<Teacher> Teachers { get; set; }
public IList<Skill> Skills { get; set; }
}

现在 Enumerable.ToList调用将起作用。

关于c# - LINQ - 无法隐式转换类型,存在显式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34567780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com