动态Lambda表达式

时间:2015-06-04 10:35:07

标签: c# linq entity-framework dynamic lambda

我目前有一个前端,用户可以使用按钮输入构建字符串,以插入操作符/操作数以及要过滤的项目。

此功能的目的是过滤列表,然后根据可以采取的项目数量计算数量。

然后将此字符串传递给控制器​​,我需要使用此字符串使用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);
    }

0 个答案:

没有答案