无法隐式转换类型'System.Linq.IQueryable?'

3
这是我的代码,它给了我以上错误。
    public ActionResult  Edit(int id = 0)
    {
        KBS_Virtual_TrainingEntities db = new KBS_Virtual_TrainingEntities();
        UsersContext ctx = new UsersContext();
        UserProfile model = ctx.UserProfiles.Find(id);

        List<CourseSubscription> user_Course_subscriptions = new List<CourseSubscription>();



        foreach (UserSubscription sub in db.UserSubscriptions)
        {
            if (sub.ID == id)
            {
                user_Course_subscriptions.Add(sub.CourseSubscription);
            }
        }
        List<CourseSubscription> not_subscribe = db.CourseSubscriptions.Except(user_Course_subscriptions);

        var coursesList = from courses in not_subscribe
                          select new SelectListItem
                          {
                              Text = courses.Course.Name,
                              Value = courses.Course.ID
                              .ToString()
                          };
        var CoursesTYPE = from CourseTypes in db.CourseTypes.ToList()
                          select new SelectListItem
                          {
                              Text = CourseTypes.Name,
                              Value = CourseTypes.ID
                              .ToString()
                          };

        ViewBag.CourseID = coursesList;
        ViewBag.type = CoursesTYPE;
        return View(model);

    }

我正在尝试使用以上代码查找未被当前用户订阅的课程订阅,但它没有起作用。


告知异常确切抛出的代码行数可能会有所帮助。 - har07
List<CourseSubscription> not_subscribe = db.CourseSubscriptions.Except(user_Course_subscriptions); 尚未订阅的课程清单 <not_subscribe> 为 db.CourseSubscriptions 中除用户已经订阅过的课程 <user_Course_subscriptions> 之外的项目列表。 - Zahid Nisar
发布完整的错误消息也有帮助,像这个例子(可能是重复的):无法隐式地将类型'System.Linq.IQueryable'转换为 'System.Collections.Generic.IList' - har07
错误327:无法隐式转换类型“System.Linq.IQueryable<KBS_Virtual_Training_Course_Site.CourseSubscription>”为“System.Collections.Generic.List<KBS_Virtual_Training_Course_Site.CourseSubscription>”。存在显式转换(是否缺少强制转换?)我遇到了这个错误。 - Zahid Nisar
是的,请在上面链接中检查给出的答案。它与您的问题几乎完全相同(唯一的区别是这里使用的是List<T>而不是其他帖子中的IList<T>)。当然,还要检查@McAden的答案。 - har07
1个回答

2

你在Except函数的结果中缺少了ToList。像这样加上一个ToList

List<CourseSubscription> not_subscribe = db.CourseSubscriptions.Except(user_Course_subscriptions).ToList();

如果你的代码中不需要列表,可以直接将其定义为 var 或者赋予正确的类型,比如 IQueryable<CourseSubscription>

var not_subscribe = db.CourseSubscriptions.Except(user_Course_subscriptions);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接