无法使用动态linq检查同一属性两次

时间:2013-04-17 15:36:59

标签: c# asp.net-mvc linq dynamic-linq

我正在构建一个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。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您想要返回颜色为红色或蓝色的所有项目。您当前的查询会返回项目的OBJ_COLOR为“红色”“蓝色”的项目。这不会返回任何东西,因为它是一个矛盾 - 它不可能都是。

我相信您想要使用OR运算符:

"OBJ_COLOR == \"Blue\" OR OBJ_COLOR == \"Red\""