Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将IEnumerable对象的单个记录作为viewmodel的一部分返回?_C#_Asp.net Mvc_Entity Framework_Linq_Asp.net Mvc 4 - Fatal编程技术网

C# 如何将IEnumerable对象的单个记录作为viewmodel的一部分返回?

C# 如何将IEnumerable对象的单个记录作为viewmodel的一部分返回?,c#,asp.net-mvc,entity-framework,linq,asp.net-mvc-4,C#,Asp.net Mvc,Entity Framework,Linq,Asp.net Mvc 4,我有一个viewmodel: public class CourseViewModel { public int CourseID { get; set; } public string Title { get; set; } public string page_title { get; set; } public string titleabbrev { get; set; } public string Meta { get; set; }

我有一个viewmodel:

public class CourseViewModel
{
    public int CourseID { get; set; }
    public string Title { get; set; }
    public string page_title { get; set; }
    public string titleabbrev { get; set; }
    public string Meta { get; set; }
    public string intro_1 { get; set; }
    public string intro_2 { get; set; }
    public string intro_3 { get; set; }
    public IEnumerable<course_section> Course_section { get; set; }
    public IEnumerable<course_subsection> Course_subsection { get; set; }
    public Enrollment Enrollments { get; set; }
}
我想发送到视图viewmodel.enrollments,但是我在这样做时遇到问题,因为我只想在viewmodel和课程页面中向视图发送一条注册记录。模型注册是IEnumerable

当我创建“allcourse”时,我大概应该只获取一条注册记录,但是无论我尝试了什么,我似乎都无法做到这一点,然后将其返回到视图中。例如,我试过:

var allcourse = db.Course_page
            .Where(i => i.titleabbrev == courseabbrev)
            .Where(b => b.enrollments.Single().UserID == User.Identity.GetUserId())
        .Include(i => i.course_sections.Select(c => c.course_subsections))
        .Include(i => i.enrollments);
将viewmodel发送到仅包含与当前登录的用户ID匹配的注册记录的视图的最佳方式是什么

编辑-我也尝试过以下方法:

var allcourse = db.Course_page
            .Where(i => i.titleabbrev == courseabbrev)
            Where(i => i.Enrollments.Any(b => b.UserID == User.Identity.GetUserId())
        .Include(i => i.course_sections.Select(c => c.course_subsections))
        .Include(i => i.enrollments);
在linqpad中测试此项将返回用户ID不匹配的注册记录


谢谢

我建议您将起点改为注册,然后从课程页面和其他链接实体中获取值

e、 g


我建议您将起点改为注册,然后从课程页面和其他链接实体中获取值

e、 g

请尝试以下查询:

var userId = User.Identity.GetUserId();

var viewModel = db.Course_page
    .Where(i => i.titleabbrev == courseabbrev)
    .Where(i => i.Enrollments.Any(b => b.UserID == userId))
    .Select(e => new CourseViewModel{
        CourseID = e.CourseID,
        page_title = e.page_title,
        titleabbrev = e.titleabbrev,
        Title = e.Title,
        intro_1 = e.intro_1,
        intro_2 = e.intro_2,
        intro_3 = e.intro_3, 
        Course_section = e.course_sections.OrderBy(i => i.Order)
            .ToList(),
        Course_subsection = e.course_sections
            .SelectMany(c => c.course_subsections)
                .Where(i => i.Titleabbrev == sectionabbrev)
                .OrderBy(i => i.Order).ToList()           
    }).Single();
请尝试以下查询:

var userId = User.Identity.GetUserId();

var viewModel = db.Course_page
    .Where(i => i.titleabbrev == courseabbrev)
    .Where(i => i.Enrollments.Any(b => b.UserID == userId))
    .Select(e => new CourseViewModel{
        CourseID = e.CourseID,
        page_title = e.page_title,
        titleabbrev = e.titleabbrev,
        Title = e.Title,
        intro_1 = e.intro_1,
        intro_2 = e.intro_2,
        intro_3 = e.intro_3, 
        Course_section = e.course_sections.OrderBy(i => i.Order)
            .ToList(),
        Course_subsection = e.course_sections
            .SelectMany(c => c.course_subsections)
                .Where(i => i.Titleabbrev == sectionabbrev)
                .OrderBy(i => i.Order).ToList()           
    }).Single();

感谢您的回复,我在Course_subsection=e.Course_section行有一个错误,Course_页面不包含Course_section的定义。此外,我看不出在这里我将注册限制为一条记录,一条与用户ID匹配的记录。感谢您的回复,我在Course_subsection=e.Course_section行上有一个错误,Course_页面不包含Course_section的定义。此外,我不知道在这方面我将注册限制为一个记录,一个与用户ID匹配的记录。现在我想起来了,这是非常有意义的。谢谢你的回答。现在我想起来了,这很有道理。谢谢你的回答。
var userId = User.Identity.GetUserId();

var viewModel = db.Course_page
    .Where(i => i.titleabbrev == courseabbrev)
    .Where(i => i.Enrollments.Any(b => b.UserID == userId))
    .Select(e => new CourseViewModel{
        CourseID = e.CourseID,
        page_title = e.page_title,
        titleabbrev = e.titleabbrev,
        Title = e.Title,
        intro_1 = e.intro_1,
        intro_2 = e.intro_2,
        intro_3 = e.intro_3, 
        Course_section = e.course_sections.OrderBy(i => i.Order)
            .ToList(),
        Course_subsection = e.course_sections
            .SelectMany(c => c.course_subsections)
                .Where(i => i.Titleabbrev == sectionabbrev)
                .OrderBy(i => i.Order).ToList()           
    }).Single();