【发布时间】:2016-03-27 22:04:43
【问题描述】:
public JsonResult GetThis(string typ1)
{
ThisContext tpc = new ThisContext();
IQueryable<ThisDB> oDataQuery = tpc.ThisDBs;
if (typ1 != null)
{
oDataQuery = oDataQuery.Where(a => a.Type == typ1);
var result = oDataQuery.ToList();
return Json(result, JsonRequestBehavior.AllowGet);
}
else return null;
}
这里的想法是创建一个基本的 get 方法,它选择具有“好”类型的每一行,它不亚于一个 Web API 方法。
问题是我不明白为什么我的代码不工作,它实际上什么也没返回(数据库不是空的,如果我在没有参数的情况下查询它,它工作顺利)。
这一定是个愚蠢的错误,但我看不到。我知道有多种方法可以进行动态 linq 查询,但我想首先了解为什么这不起作用。
感谢您的宝贵时间!
【问题讨论】:
-
ThisDB 和 ThisContext 是什么?
-
我使用的是Entity Framework 6,所以ThisContext是我的dbcontext,ThisDB是一个模型,ThisDBs是ThisDB的ICollection。
-
你说如果你“不带参数查询它工作顺利”。你是说如果你跳过
oDataQuery = oDataQuery.Where(a => a.Type == type1);行,你会得到表中所有记录的列表? -
我建议您尽可能通过 LinqPad 尝试 OData WebApi 并观察查询字符串。 OData 的接口非常脆弱。
标签: c# linq dynamic asp.net-web-api entity-framework-6