可以说我有这有以下形式:Lambda表达式和搜索
名称:文本框
电子邮件:文本框
年龄:文本框
现在我想要得到的客户集合基于此过滤器文本框
所以我想用类似的东西:
List<customer> customers = getCustomerswhere(c=>c.name == txtName.Text && Email == txtEmail.Text);
现在的我当然不知道,他将填补,而他不会这么
if (txtName.Text.trim() != "")
//something like c=>c.Name == txtName.text;
if (txtEmail.Text.trim() != "")
//something like and c=>c.Email == txtEmail.text;
我如何做到这一点!我不能连接lambda表达式,我知道我可以使用动态表达式,但我认为有更简单的方法?任何想法如何实现这一点?
好,我想这:
Func<Customer,bool > a = (bb) => bb.fullName == "asdfsd";
Func<Customer, bool> b = c => c.lastName == "sdas";
Func<Customer, bool> cc = c => a(c) && b(c);
现在谈到另一个问题
通过CC方法IM来期待Expression<Func<T, bool>> expression
所以它不工作让我编译时错误斜面在类型之间转换!
肯定的,但与问题是,我将失去智能感知并强烈键入我试过 var a =(Customer C)=> c.name == txtName.Text; 但它给了我编译时错误: lambda表达式不能分配给隐式类型的局部变量 – Stacker 2010-08-10 08:45:43
@Zeus那不是你的lambda表达式的错误,但只是specifiing你正在寻找的委托类型的要求在你的情况下创建你可以propably写Predicate或Func 。没有你不会放松类型安全。 _只是松动那是动态的。 –
2010-08-10 08:54:59