5

ObjectQueryビルダーを使用して生のSQLフィルターWHERE(...)または(...)を書き直す方法について誰かが答えてくれませんか?

String queryRaw = "SELECT ls.LocaleName, ls.IsActive, ls.LocaleDescription " +
                  "FROM RoutesEntities.Locales AS ls ";

                  //" WHERE ls.LocaleName = 'en' OR ls.LocaleName = 'de' "

this._queryData = new ObjectQuery<DbDataRecord>(queryRaw, routesModel);

Where()メソッドを使用しますが、代わりにORを使用したいのですが、ANDで区切られたwhere句が生成されます。QueryBilderで可能ですか?これを使用して「OR分離」フィルターを生成する方法を意味します。

Where("it.LocaleName IN (@localeName)", new ObjectParameter("localeName", String.Join(",", localeName)))

ありがとう、Artem

4

4 に答える 4

8

それはまた起こっています、私は自分の質問に自分で答えます。これをありがとう。

ここに答えがあります:

EntityCommandとしてのObjectQueryはまだ"IN"句をサポートしていません...これは、DBからすでに選択されているDataSetを使用するまで、DBへのクエリ送信にWHEREINフィルターを使用する機会がないことを意味します。したがって、LINQメソッドのみがこれを実行でき、選択したリスト<>でのみ実行できます。

ただし、それほど明確ではないが効果的な決定の代替手段があります。クエリで複数のOR条件を使用でき、それらは私にとっては正常に機能します。

ObjectQuery<DbDataRecord> query = query.Where("it.RouteID=1 OR it.RouteID=2");

これが誰かを助けることを願っています...楽しんでください:)

于 2010-09-27T15:55:23.067 に答える
5

ObjectQueryでIN句を使用できます。(の代わりに{を使用する必要があります。

例:「it.IDIN(4,5,6)」の代わりに「it.IDIN{4,5,6}」

この回答のすべてのクレジットは、 Linq to Entitiesを使用した「Contains()」回避策から来ていますか?

于 2011-09-02T03:58:30.913 に答える
2

ObjectQuery as EntityCommand SUPPORT"IN"CLAUSE。シンテックスは

ObjectQuery<SampleProduct> s = db.SampleProducts;
s.Name = "SampleProductName";
string strIDList = "10,20,30";
s= s.Where("SampleProductName.ID IN {" + strIDList + "}");
于 2012-03-29T14:55:23.333 に答える
0

ObjectQuery as EntityCommand SUPPORT"IN"CLAUSE。

ObjectQueryの論理演算子:

ObjectQueryを使用すると、複数のwhere条件を結合できます。

  • デフォルトでは、条件はANDパラメーターを使用して結合されます。条件の間にOR演算子を配置するには、指定されたWhereメソッドの間にOr()メソッドを呼び出します。条件のコードをより明確で読みやすくしたい場合は、And()メソッドを明示的に呼び出すこともできます。

例://名が「Joe」または姓が「Smith」のユーザーを取得します。

var whereQuery = UserInfoProvider.GetUsers()

.Where("FirstName", QueryOperator.Equals, "Joe")
.Or()
.Where("LastName", QueryOperator.Equals, "Smith");

詳細:https ://docs.kentico.com/display/K82/Retrieveing+database+data+using+ObjectQuery+API

于 2016-05-04T07:24:30.423 に答える