0

Windows Phone 8にリモートで保存されたデータベースからオブジェクトのリスト ( Catsと呼びましょう) を取得するために作成する必要があるクエリがあります。Microsoft Azure

このオブジェクト ( Cats ) のリストを取得するには、他のオブジェクトのリストを反復処理して外部キーを取得する必要があります。それをCatHomesのリストと呼びましょう。しかし、Bobという名前のすべての猫も必要です。

Bobという名前のすべてのCatを取得する方法を知っています。

  private async void getCatsForCatHomesOrCalledBob(Collection<CatHome> homes)
  {
    // get a list of cats that have visited the cat homes in the collection
    IMobileServiceTableQuery<Cat> query = catTable
                                            .Where(cat => cat.Name == "Bob");

    Collection<Cat> items = null;
    // add the items to a list
    items = await query.ToCollectionAsync();
  }

しかしCollectionCatHomeオブジェクトを繰り返し処理し、それらをクエリに追加して構築するにはどうすればよいでしょうか?

私は次のようなことができることを知っています:

IMobileServiceTableQuery<Cat> query = 
   catTable.Where(cat => cat.Name == "Bob" || cat.HomeId == 1
                    || cat.HomeId == 2);

を反復処理することはできません。Collectionやりたいことは次のようなものです。

IMobileServiceTableQuery<Cat> query = catTable.Where(cat => cat.Name == "Bob");
foreach(CatHome home in homes){
  query.AddOrStatement(cat.HomeId == home.Id);
}

しかし、これを行う方法が見つかりません。

代替手段はありますか?String理想的には、変数をに渡すことができるようにしたいWhere()ので、SQL ステートメントを として構築できますStringが、それを行う手段も見つかりません。

AndroidiOSには同様の機能があり、WP8には存在しない.Or()または.And()メソッドを使用して式を構築できます。IMobileServiceTableQuerySkip()

CatHomeオブジェクトのリストを繰り返し処理し、各オブジェクトに対してクエリを実行して、結果をマスター リストに追加できることは承知していますが、それは電話のリソースの不適切な使用のように思えます。

どんな助けでも大歓迎です。

4

2 に答える 2

1

homesinがリストであると仮定すると、foreach(CatHome home in homes){これを行うことができます:

IMobileServiceTableQuery<Cat> query = catTable.Where(cat => cat.Name == "Bob" && homes.Contains(cat.HomeId));

IEnumerable.Contains が機能するかどうかはわかりませんが、への変換homesList<CatHome>簡単なはずです。

于 2013-06-21T16:16:57.340 に答える
0

ここでは、where句に配列を使用したLinqクエリがすでに回答されていますか? . 最初に外部キーのリストを取得してから、contains where 句で使用します

于 2013-06-21T10:44:18.067 に答える