我正在构建一个MVC应用程序,它必须为服务器构建动态linq查询,而我正面临着困扰我的事情。
到目前为止,我可以进行如下查询:
var objQry = from o in m_DB.OBJECTS.Where(whereConditions)
select c;
if(!objQry.Any())
{
return null;
}
这很好用。 “whereConditions”变量是之前构建的字符串。以下是有效查询字符串的示例:
OBJ_NAME == \"Sword\" and OBJ_OWNER == \"Stan\"
这将返回“Stan”拥有的名称为“Sword”的任何对象。但是,奇怪的是,如果我使用两次相同的参数创建一个查询字符串,如下所示:
OBJ_COLOR == \"Blue\" and OBJ_COLOR == \"Red\"
即使我认为我可以证明我的数据库有单个“蓝色”项和单个“红色”项,此字符串将返回null。任何人都可以帮助我吗?
答案 0 :(得分:2)
如果我理解正确,您想要返回颜色为红色或蓝色的所有项目。您当前的查询会返回项目的OBJ_COLOR
为“红色”和“蓝色”的项目。这不会返回任何东西,因为它是一个矛盾 - 它不可能都是。
我相信您想要使用OR
运算符:
"OBJ_COLOR == \"Blue\" OR OBJ_COLOR == \"Red\""