相关疑难解决方法(0)

动态构建Linq Lambda表达式

好吧,我的猜测已经在某个地方得到了解答,而我对语法还不太熟悉,还没理解,所以请耐心等待.

我的网络应用程序的用户需要过滤网格视图中的一长串项目,通过linqdatasource访问.我正在使用OnSelecting事件来进一步过滤项目.我想根据用户在DropDownLists中所做的选择来过滤这些项目.

例如,他们选择"标题""包含""弗雷德"这导致

e.Result = dbContext.Opps.Where(opp => opp.Title.Contains("Fred"));
Run Code Online (Sandbox Code Playgroud)

或"描述""不包含""Alpha"导致

 e.Result = dbContext.Opps.Where(opp => !opp.Description.Contains("Alpha"));
Run Code Online (Sandbox Code Playgroud)

我想动态地构建Expression(System.Linq.Expressions.Expression>),而不是使用嵌套的switch表达式来生成它,因为我想要检查多个字段,而且我还想使用StartsWith和EndsWith检查.如果我可以将Expression构建为字符串,就像这样:

string stringExpression = string.Format("opp => opp.{0}.{1}(\"{2}\")",
    ddlCustomFilter.SelectedValue,
    ddlFilterType.SelectedValue,
    txtFilterText.Text);
Run Code Online (Sandbox Code Playgroud)

然后以某种方式将它转换为表达式......这可能吗?或者我应该咬紧牙关并生成创建各种表达式所需的所有switch()语句?

c# lambda

11
推荐指数
2
解决办法
3万
查看次数

标签 统计

c# ×1

lambda ×1