Asp.net LINQ to SQL:是否将变量分配给数据上下文表?
我有一个方法,它接受一个字符串值作为表名,以便将数据绑定到网格。我已经为每个表手动输入了lambda LINQ表达式,我想把它减少到一行。如何将变量分配给上下文表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()) {
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,数据);
}
}