我目前有一个前端,用户可以使用按钮输入构建字符串,以插入操作符/操作数以及要过滤的项目。
此功能的目的是过滤列表,然后根据可以采取的项目数量计算数量。
然后将此字符串传递给控制器,我需要使用此字符串使用Entity Framework查询数据库。我一直在关注Dynamic Lambda和Linq来解决这个问题,但却无法满足我的需求,特别是在元素分组方面。
通常字符串可能如下所示
(( Mod1 = 1 ) OR ( Mod2 = 1 ) OR ( Mod3 = 1) AND ModHigh = 1)
如果有更好的方法,我愿意改变这个解决方案,我还想到了类似下面的内容,它更加用户友好。但是再次在控制器中对此进行建模需要做一些事情,我不知道从哪里开始。
Intuitive interface for Composing Boolean Logic
修改
目前我正在使用以下内容,这是基于here
的教程/// <summary>
/// Allows live updating of View to show which stores are
/// going to be effected by this Rule.
/// </summary>
/// <param name="filterString">Customisable Query From View</param>
/// <returns>Json Object - With a collection of Stores</returns>
public JsonResult GetFilteredStores(string filterString = "")
{
int customerId = (int)System.Web.HttpContext.Current.Session["CustomerID"];
var query = from spa in StoreProfileLogic.GetBy(x => x.Active && x.Store.CustomerID == customerId)
.Where(filterString)
.OrderBy(x => x.StoreID)
select spa.StoreID;
return Json(query, JsonRequestBehavior.AllowGet);
}