【发布时间】:2012-02-29 16:35:36
【问题描述】:
我有用户界面,用户可以在其中为该列选择网格列(如年龄)和运算符(小于、等于或大于)。
然后根据选择过滤网格数据。
我有一个从来自客户端的 JSON 反序列化的以下类。
/// <summary>
/// Filter for reducing grid results
/// </summary>
public class Filter
{
/// <summary>
/// Name of the column
/// </summary>
public string name;
public string value;
public int @operator { private get; set; }
public Operator Operator()
{
return (Operator) @operator;
}
}
public enum Operator
{
None = -1,
LesserThan = 0,
Equals = 1,
GreaterThan = 2
}
由于动态添加新列进行过滤的性质,我想创建通用解决方案来访问数据。
我希望避免使用大量的 if/switch 语句,例如
switch(columnName)
{
case "age":
{
if(operator == Operator.LesserThan)
{
query = entities.Where(o => o.Age < age);
}
else if (operator == Operator.GreaterThan)
{
query = entities.Where(o => o.Age > age);
}
etc.
break;
}
etc.
}
任何想法如何为该问题创建更通用的解决方案?
更新 似乎有很多方法可以完成比十亿个 if 语句更清洁的解决方案。现在我只需要比较不同的解决方案。
【问题讨论】:
标签: c# entity-framework optimization