所以,我开始构建一个小测试应用程序来测试lambda表达式.我在这里和其他地方找到了几个例子,但我没有得到它们.
有人可以通过使用文本框或任何其他变量来解释我如何构建表达式吗?
我的测试清单
List<People> lPeople = new List<People>
{
new People { Name= "Jean", LastName = "Borrow", Age= 21 } ,
new People { Name= "Dean", LastName = "Torrow", Age= 20 }
};
Run Code Online (Sandbox Code Playgroud)
工作lambda表达式
IEnumerable<People> result = lPeople.Where(p => p.Age < 21);
dgv_1.DataSource = result.ToList();
dgv_1.Update();
Run Code Online (Sandbox Code Playgroud)
如何动态构建表达式?
喜欢的东西lPeople.Where(p => p.LastName == Textbox.Text);(当然不起作用)
谢谢!
编辑:在下面的解决方案中添加了一些代码
Int32 iAge;
Boolean bSuc = Int32.TryParse(tb_filter_age.Text, out iAge);
if (!bSuc)
{
iAge = 0;
}
Run Code Online (Sandbox Code Playgroud)
"这当然不起作用"
尝试时会发生什么?从表面上看,这就是我一直在做的事情.
要根据指定运算符的ComboBox切换操作:
int age = int.Parse(textBoxAge.Text);
IEnumerable<People> result;
if (comboBoxOperator.Text == "=")
result = lPeople.Where(p => p.Age == age);
else if (comboBoxOperator.Text == "<")
result = lPeople.Where(p => p.Age < age);
else
result = lPeople.Where(p => p.Age > age);
dgv_1.DataSource = result.ToList();
dgv_1.Update();
Run Code Online (Sandbox Code Playgroud)
int如果用户输入无法转换的内容,则将age字符串转换为an的代码将抛出.查找TryParse以避免异常.
在http://www.albahari.com/nutshell/predicatebuilder.aspx上试用Predicate Builder
我用它来进行高级搜索,用户可以继续添加可选的搜索条件.