好吧,我的猜测已经在某个地方得到了解答,而我对语法还不太熟悉,还没理解,所以请耐心等待.
我的网络应用程序的用户需要过滤网格视图中的一长串项目,通过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()语句?