c# - 无法将类型 'System.Linq.IQueryable<Project.Models.TaskTimeLine>' 隐式转换为 'Project.Models.TaskTimeLine'

标签 c# asp.net-mvc model

我正在尝试将自定义形状类传递给 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;
    }

我在某些地方进行如此多奇怪的强制转换的唯一原因是这些似乎有助于程序编译。它目前没有编译,但我确实编译了,但是当运行实际请求时它失败了,并显示相同的错误消息。

任何人都可以提供帮助,也许还可以为将来遇到这种事情的人添加一个更有用的标题。

最佳答案

taskTimeLineTaskTimeLine ;为什么它也是一个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/

相关文章:

c# - 如何将 Url.Route 用于 OData 路由

asp.net-mvc - ASP.net MVC 3-在OnActionExecuting中获取发布的JSON数据

validation - CakePHP 3 ownToMany 验证

c# - 为什么 DateTime.ParseExact 会抛出格式为 "dd.Mm.yyy"且日期为 4 位数年份的异常?

C# 单元测试,使用 zip 文件中的 XML

asp.net-mvc - Html.HiddenFor 以不同方式处理 string 和 int

asp.net-mvc - AOP 和对 UI 元素应用安全性

android - 在模型对象中引用 Strings.XML 以支持本地化

model - 如何使用 jena API 和 SPARQL 更新模型,例如。更新节点值

c# - 如何显示哪个子正则表达式匹配失败?