【发布时间】:2012-02-09 16:25:39
【问题描述】:
我在为以下数据创建 linq 查询方面需要帮助:
List<Dictionary<string, object>> entityProps = new List<Dictionary<string, object>>();
for (int i = 0; i < 10; i++)
{
entityProps.Add(new Dictionary<string, object>{
{"prop1", Guid.NewGuid().ToString()},
{"prop2","test"+i},
{"prop3", i /0.5},
{"prop4", i}
});
}
string propName = "prop3"; // I can also get eny of prop 1-4
int value = 65; // here for prop2 I receive string e.g. "test3"
entityProps.Where(p => p[propName] == value);
我收到以下错误:运算符“==”不能应用于“object”和“int”类型的操作数
我想动态地将每个道具转换为它的类型,因为将来我想使用表达式树在运行时 lambda 查询中构建我收到的操作(操作可以相等,更少,更大......)。 如果我构建表达式树,我仍然需要将数据转换为其原始类型吗?
谢谢!
【问题讨论】:
-
我可以使用
entityProps.Where(p => p[propName].ToString() == value.ToString());,但这仅适用于相等运算符。我想使用大于,小于..
标签: linq lambda runtime expression-trees