2

我正在构建一个 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。谁能帮我吗?

4

1 回答 1

2

如果我理解正确,您希望退回所有颜色为红色或蓝色的物品。您当前的查询返回项目OBJ_COLOR同时为“红色”“蓝色”的项目。这不会返回任何东西,因为它是一个矛盾 - 它不能两者兼而有之。

我相信您想改用OR运算符:

"OBJ_COLOR == \"Blue\" OR OBJ_COLOR == \"Red\""
于 2013-04-17T15:41:05.263 回答