C# 如何使用LINQ或EF在列表中添加过滤结果?
在以下代码中,我想在我的结果变量中添加一个过滤列表:-C# 如何使用LINQ或EF在列表中添加过滤结果?,c#,asp.net-mvc,entity-framework,linq,C#,Asp.net Mvc,Entity Framework,Linq,在以下代码中,我想在我的结果变量中添加一个过滤列表:- public JsonResult FetchDataForEdit() { int IDtoEdit = Convert.ToInt32(TempData["IDtoEdit"]); string MyTableName = Convert.ToString(TempData["MyTableName"]); try { Type table
public JsonResult FetchDataForEdit()
{
int IDtoEdit = Convert.ToInt32(TempData["IDtoEdit"]);
string MyTableName = Convert.ToString(TempData["MyTableName"]);
try
{
Type tableType = typeof(CourseDesc);
switch (MyTableName)
{
case "CourseTbl":
tableType = typeof(CourseTbl);
break;
case "CourseDescTbl":
tableType = typeof(CourseDesc);
break;
case "CourseSubDesc":
tableType = typeof(CourseSubDesc);
break;
case "InternTbl":
tableType = typeof(InternShip);
break;
case "ContactTbl":
tableType = typeof(Contact);
break;
}
using (EBContext db = new EBContext())
{
var results = new List<object>();
foreach (var item in db.Set(tableType))
{
//Want to Add result for selected IDtoEdit here like (db.Set(tableType).Where(x=>x.Id==IDtoEdit))
results.Add(item);
}
return new JsonResult { Data = results, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
}
catch (Exception ex)
{
string innerMessage = (ex.InnerException != null) ? ex.InnerException.Message : "";
return new JsonResult { Data = "Not Found", JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
}
public JsonResult FetchDataForEdit()
{
int-IDtoEdit=Convert.ToInt32(TempData[“IDtoEdit”]);
字符串MyTableName=Convert.ToString(TempData[“MyTableName”]);
尝试
{
类型tableType=类型(CourseDesc);
开关(MyTableName)
{
案例“CourseTbl”:
tableType=类型(CourseTbl);
打破
案例“CourseDescTbl”:
tableType=类型(CourseDesc);
打破
案例“课程主题”:
tableType=类型(CourseSubDesc);
打破
案例“InternTbl”:
tableType=typeof(实习);
打破
案例“ContactTbl”:
tableType=类型(触点);
打破
}
使用(EBContext db=new EBContext())
{
var results=新列表();
foreach(数据库集中的变量项(tableType))
{
//要在此处添加所选IDtoEdit的结果,如(db.Set(tableType).Where(x=>x.Id==IDtoEdit))
结果:增加(项目);
}
返回新的JsonResult{Data=results,JsonRequestBehavior=JsonRequestBehavior.AllowGet};
}
}
捕获(例外情况除外)
{
字符串innerMessage=(ex.InnerException!=null)?ex.InnerException.Message:;
返回新的JsonResult{Data=“notfound”,JsonRequestBehavior=JsonRequestBehavior.AllowGet};
}
}
如您所见,我正在JsonResult中传递表名和IDtoEdit。因此,我在'results'变量中从数据库获取所有记录。
但我无法根据where条件筛选“结果”。任何帮助都将不胜感激 因为您是在一个泛型集合上操作,所以使用传统的LINQ
Where
扩展方法将不起作用。理想的解决方案是修改程序结构,而不必处理泛型集
如果您想继续使用当前的程序结构,那么最好使用这个包,它允许您将查询定义为文本。您的代码将如下所示:
var result = db.Set(tableType).Where("Id = @0", IDtoEdit);
一些额外的动态Linq你说“不能”是什么意思?如果您尝试,会发生什么情况?我这样尝试:-
var results=new List();results=db.Set(tableType),其中(x=>x.Id==IDtoEdit)代码>但给我错误:-dbset不包含定义,当我不能使用“Where”时,我可以使用什么来获取所需的条件结果?感谢您的回复。当我应用此代码时:-使用(EBContext db=new EBContext()){var results=db.Set(tableType)。其中(“Id=@0”,IDtoEdit);返回新的JsonResult{Data=results,JsonRequestBehavior=JsonRequestBehavior.AllowGet};}
It's giving me error:-操作无法完成,因为DbContext已被释放。