我有用户界面,用户可以选择该列的网格列(如年龄)和运算符(小于,等于或大于)。生成LinqToEntities其中声明取决于用户选择
然后根据选择过滤网格数据。
我有一个从客户端来的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
}
由于性质动态添加新的列过滤我想创建通用的解决方案来访问数据。
我想如果有巨量/开关之类的语句
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.
}
任何想法如何创建问题更加通用的解决方案避免?
更新 看来,有许多方法可以完成清洁解决方案,而不是10亿条语句。现在我只需要比较不同的解决方案。
您能否分享一个适用于OP的用例的示例,以使您的答案更具描述性和完整性? – 2012-02-08 14:28:26