我有以下控制器代码返回一个Json列表对象到我的视图,绘制一个饼图。LINQ to SQL有条件的地方从句
有4个输入参数,我有它的3个工作。
但是,标题为“SiteTypeId”的第一个参数需要包含在其中。
我的问题是如何将这个整齐地包含在代码中,我想避免重写的功能。
所需的额外的逻辑是:
- 如果
SiteTypeId = -1
(那么这意味着显示所以没有所要变更全部) - 如果
SiteTypeId = 0
(然后需要i.SiteTypeId == 0
被添加) - 如果
SiteTypeId = 1
(那么需要添加i.SiteTypeId == 1
)
如果上面的2和3都是需要它的话我猜很容易。我认为必须有一个简洁的表达方式,或者将LINQ分解成2个可能的条件。
我是新来的LINQ - 谁能告诉我,这里是控制器代码我需要修改:
public JsonResult GetChartData_IncidentsBySiteStatus(string SiteTypeId, string searchTextSite, string StartDate, string EndDate)
{
if (searchTextSite == null)
searchTextSite = "";
DateTime startDate = DateTime.Parse(StartDate);
DateTime endDate = DateTime.Parse(EndDate);
var qry = from s in _db.Sites
join i in _db.Incidents on s.SiteId equals i.SiteId
where s.SiteDescription.Contains(searchTextSite)
&& (i.Entered >= startDate && i.Entered <= endDate)
group s by s.SiteStatus.SiteStatusDescription + "[" + s.SiteTypeId.ToString() + "]"
into grp
select new
{
Site = grp.Key,
Count = grp.Count()
};
return Json(qry.ToList() , JsonRequestBehavior.AllowGet);
}
+1要启动一个灵活的过滤UI,我结束了构建基于周围PredicateBuilder动态ExpressionFilter;这是一种美味的技术。 :) –