在数据层ASP.net MVC中进行多个查询和过滤

时间:2017-10-10 08:54:33

标签: asp.net asp.net-mvc asp.net-mvc-4

是否可以在数据层中执行多个查询和过滤。

问题:我需要在此层上执行此操作,因为我在controller.js上执行此操作时遇到性能和缓存问题(使用angularjs)。

概述:我需要从学生数据库表中每年显示不同的表。当管理员点击第一年的按钮时,它将显示所有一年级学生(其他过滤和排序在表中)

有四个html显示表:第1年,第2年,第3年和第4年

我可以在数据层中执行此操作吗?见下面的代码:

        public IQueryable<RequestStudents> Get()
    {
        StudentsModelContainer context = DbContextFactory<StudentsModelContainer>.Create();
            var result = context.RequestStudentSet;
            return result;
    }

以上代码将显示所有学生

我已经尝试了以下代码,但它只适用于第一年,我无法添加其他三个查询

public IQueryable<RequestStudents> Get()
    {
        StudentsModelContainer context = DbContextFactory<StudentsModelContainer>.Create();
            var result = context.RequestSet.Where(x => x.YearLvl == 1);
        return result;
    }

1 个答案:

答案 0 :(得分:1)

是的,你可以将参数传递给Get方法,或者你可以重载Get方法,如下所示

public IQueryable<RequestStudents> Get()
{
    StudentsModelContainer context = DbContextFactory<StudentsModelContainer>.Create();
        var result = context.RequestSet.Where(x => x.YearLvl == 1);
    return result;
}

public IQueryable<RequestStudents> Get(int yearLevel)
{
    StudentsModelContainer context = DbContextFactory<StudentsModelContainer>.Create();
        var result = context.RequestSet.Where(x => x.YearLvl == yearLevel);
    return result;
}

要返回FirstorDefault值,您可以按以下方式更新您的方法

public RequestStudents Get(int yearLevel)
    {
        StudentsModelContainer context = DbContextFactory<StudentsModelContainer>.Create();
        return context.RequestSet.Where(x => x.YearLvl == yearLevel).FirstOrDefault();            
    }