大家好,这样的东西很有意思,请问是否可以从string中获取比较符号(> < = >= <=)然后使用呢?
public class Main
{
List<ListItem> ls = new List<ListItem>();
private void FilterButtonClick(...)
{
if(Combobox1.SelectedText == "Id")
{
if(Combobox2.Selectedtext == ">=")
{
var its = ls.Where(z=>z.Id>=Convert.ToInt32(Textbox1.Text)).ToList();
for(int i = 0;i<its.Count;i++)
{
datagridview.Rows.Add(Its[i].Name);
}
else if(Combobox2.Selectedtext == "<=")
{
var its = ls.Where(z=>z.Id<=Convert.ToInt32(Textbox1.Text)).ToList();
for(int i = 0;i<its.Count;i++)
{
datagridview.Rows.Add(Its[i].Name);
}
}
}
else if(Combobox1.SelectedText == "Age")
{
if(Combobox2.Selectedtext == ">=")
{
var its = ls.Where(z=>z.Age>=Convert.ToInt32(Textbox1.Text)).ToList();
for(int i = 0;i<its.Count;i++)
{
datagridview.Rows.Add(Its[i].Name);
}
else if(Combobox2.Selectedtext == "<=")
{
var its = ls.Where(z=>z.Age<=Convert.ToInt32(Textbox1.Text)).ToList();
for(int i = 0;i<its.Count;i++)
{
datagridview.Rows.Add(Its[i].Name);
}
}
}
}
}
public class ListItem
{
string Name;
int Id;
int Age;
int birthday_date;
int Height;
int Weight;
}
我知道用 Switch 编写代码更好。但我在网站上写了,这样更方便。
例如,对于
int:像这样使用:
工作代码:http: //ideone.com/UWgKlU
你可以使用这样的东西:
通过脚本 API:
[带有一堆依赖项的包,可能需要很长时间才能下载]
之后,您可以即时构建代码:
在实际使用中,值得通过
Compile()+RunAsync而不是. 来添加缓存和强制编译EvaluateAsync。对于三个比较标志,这就像对麻雀的大炮。如果对象很少,那么最简单的选择是通过比较符号+反射切换,以按名称提取属性。便宜,开朗和可读。
如果有很多对象,那么您可以尝试组装一个 lambda 以进行动态比较: