2

サーバーへの動的なlinqクエリを作成する必要があるMVCアプリを作成していますが、困惑する何かに直面しています。

これまでのところ、次のようなクエリを作成できます。

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」という名前のオブジェクトが返されます。しかし、奇妙なことに、同じパラメーターを 2 回使用してクエリ文字列を作成すると、次のようになります。

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 に答える