不能使用动态linq检查同一属性两次

本文关键字:属性 两次 动态 linq 检查 不能 | 更新日期: 2023-09-27 18:09:35

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

不能使用动态linq检查同一属性两次

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

我相信你想用OR操作符来代替:

"OBJ_COLOR == '"Blue'" OR OBJ_COLOR == '"Red'""