The*_*edi 4 .net c# linq lambda linq-to-sql
我有一个用户控件,它接受一个Func,然后它给出了IQueryable的Linq"Where"扩展方法.我的想法是,从调用代码,我可以传递所需的搜索功能.
我想动态地构建这个搜索功能:
Func<Order, bool> func == a => true;
if (txtName.Text.Length > 0) {
//add it to the function
func = a => func(a) && a.Name.StartsWith(txtName.Text);
}
if (txtType.Text.Length > 0) {
//add it to the function
func = a => func(a) && a.Type == txtType.Text;
}
..... etc .....
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于,因为我重用名称"func",所以它创建了一个递归函数.
是否有一种简单的方法来构建像这样的表达式树来创建一个动态的where子句(在没有IQueryable前面并反复调用"Where")的情况下?
只需将当前lambda保存在临时变量中以防止递归.
var tempFunc = func;
func = a => tempFunc(a) && ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2966 次 |
| 最近记录: |