Asp.net LINQ to SQL:是否将变量分配给数据上下文表?

Asp.net LINQ to SQL:是否将变量分配给数据上下文表?,asp.net,linq,Asp.net,Linq,我有一个方法,它接受一个字符串值作为表名,以便将数据绑定到网格。我已经为每个表手动输入了lambda LINQ表达式,我想把它减少到一行。如何将变量分配给上下文表 public void BindDropDown(DropDownList ddl, string tableName) { using (RequisitionModelContainer context = new RequisitionModelContainer()) {

我有一个方法,它接受一个字符串值作为表名,以便将数据绑定到网格。我已经为每个表手动输入了lambda LINQ表达式,我想把它减少到一行。如何将变量分配给上下文表

    public void BindDropDown(DropDownList ddl, string tableName)
    {
        using (RequisitionModelContainer context = new RequisitionModelContainer())
        {
            var queryReqDepartments = context.ReqDepartments.OrderBy(c => c.Name);
            var reqDepartment = queryReqDepartments.ToList();
            var queryDepartmentCats = context.DepartmentCats.OrderBy(c => c.Name);
            var departmentCats = queryDepartmentCats.ToList();
            var queryTitleCats = context.TitleCats.OrderBy(c => c.Name);
            var titleCats = queryTitleCats.ToList();
            var queryPurposeCats = context.PurposeCats.OrderBy(c => c.Name);
            var purposeCats = queryPurposeCats.ToList();

            //Switch statement takes in a table name and binds table data to the drop down list
            switch (tableName)
            {    
                case "ReqDepartments":
                    ddl.DataSource = reqDepartment;
                    BindList(ddl, reqDepartment);
                    break;
                case "DepartmentCats":
                    ddl.DataSource = departmentCats;
                    BindList(ddl, departmentCats);
                    break;
                case "TitleCats":
                    ddl.DataSource = titleCats;
                    BindList(ddl, titleCats);
                    break;
                case "PurposeCats":
                    ddl.DataSource = purposeCats;
                    BindList(ddl, purposeCats);
                    break;
            }
        }
    }
希望这有助于:

private static IDictionary<string,Func<RequisitionModelContainer, IQueryable>> tableProviders;

public static MyClass() //your class' static constructor
{
    tableProviders = new Dictionary<string,Func<RequisitionModelContainer, IQueryable>> 
    {
        {"ReqDepartments", context => context.ReqDepartments.OrderBy(c => c.Name)},
        {"DepartmentCats", context => context.DepartmentCats.OrderBy(c => c.Name)},
        {"TitleCats", context => context.TitleCats.OrderBy(c => c.Name)},
        {"PurposeCats", context => context.PurposeCats.OrderBy(c => c.Name)}
    };
}

public void BindDropDown(DropDownList ddl, string tableName)
{
    using (RequisitionModelContainer context = new RequisitionModelContainer())
    { 
        var data = tableProviders[tableName](context);
        ddl.DataSource = data;
        BindList(ddl, data);
    }
}
私有静态IDictionary表提供者;
公共静态MyClass()//您的类的静态构造函数
{
tableProviders=新字典
{
{“ReqDepartments”,context=>context.ReqDepartments.OrderBy(c=>c.Name)},
{“DepartmentCats”,context=>context.DepartmentCats.OrderBy(c=>c.Name)},
{“TitleCats”,context=>context.TitleCats.OrderBy(c=>c.Name)},
{“PurposeCats”,context=>context.PurposeCats.OrderBy(c=>c.Name)}
};
}
public void BindDropDown(DropDownList ddl,字符串表名)
{
使用(RequisitionModelContainer上下文=新RequisitionModelContainer())
{ 
var data=tableProviders[tableName](上下文);
ddl.DataSource=数据;
绑定列表(ddl,数据);
}
}