我正在尝试将自定义形状类传递给 View ,但我遇到了一点麻烦。
这是我遇到的错误。
无法将类型“System.Linq.IQueryable”隐式转换为“Project.Models.TaskTimeLine”。存在显式转换(是否缺少强制转换?)
这是我第一次将列表添加到类中,并尝试按原样在另一个内部传递一个列表。
类定义
public class TaskTimeLine
{
public Task task { get; set; } // to hold a single object
public List<DateTime> scheduledDateTime { get; set; } // to hold a collection of date times..
}
Controller 的 Action 与此类似。
[Authorize]
public ActionResult Details2(int id)
{
TaskTimeLine task = new TaskTimeLine(); //create new instance of TaskTimeLine
task = (IQueryable<TaskTimeLine>)taskRepository.GetTaskAndTimeLine(id);
if (task == null)
return View("NotFound");
else
return View("Details", task);
}
到目前为止一切都很正常,所以我猜这里可能出了问题。
public IQueryable<TaskTimeLine> GetTaskAndTimeLine(int taskId)
{
TaskTimeLine taskTimeLine = new TaskTimeLine(); // create new main object
taskTimeLine.scheduledDateTime = new List<DateTime>(); instanciate list object inside
taskTimeLine.task = db.Tasks.SingleOrDefault(d => d.id == taskId); read the record to fill the single task object
/// Lots of logic is performed here to add loads of date records to the list object.
/// If I add a break point and check the list I can see that all the date items have gone fine into the collection
return (IQueryable<TaskTimeLine>)taskTimeLine;
}
我在某些地方进行如此多奇怪的强制转换的唯一原因是这些似乎有助于程序编译。它目前没有编译,但我确实编译了,但是当运行实际请求时它失败了,并显示相同的错误消息。
任何人都可以提供帮助,也许还可以为将来遇到这种事情的人添加一个更有用的标题。
最佳答案
taskTimeLine
是 TaskTimeLine
;为什么它也是一个IQueryable<TaskTimeLine>
?
TaskTimeLine taskTimeLine = new TaskTimeLine(); // create new main object
....
return (IQueryable<TaskTimeLine>)taskTimeLine;
IQueryable<T>
与数据的源相关 - 而不是数据本身的实例(可能的异常(exception):Enumerable.AsQueryable()
)。
我怀疑你的方法GetTaskAndTimeLine
应该简单地返回 TaskTimeLine
;并失去了很多 Actor ......
public TaskTimeLine GetTaskAndTimeLine(int taskId)
{
TaskTimeLine taskTimeLine = new TaskTimeLine(); // create new main object
...[snip]
return taskTimeLine;
}
...
TaskTimeLine task = taskRepository.GetTaskAndTimeLine(id);
关于c# - 无法将类型 'System.Linq.IQueryable<Project.Models.TaskTimeLine>' 隐式转换为 'Project.Models.TaskTimeLine',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1586177/