UWPでMicrosoft.OData.Clientを使用する時、LINQ式でエラー

公開日: : Blog, Microsoft, 未分類 , , ,

UWPからは非同期メソッドを実行する必要があるので、通常はExecuteAsyncをコールするが、
LINQ式を使ってエンドポイントに投げようとすると以下の例外が発生する。

This target framework does not enable you to directly enumerate over a data service query. This is because enumeration automatically sends a synchronous request to the data service. Because this framework only supports asynchronous operations, you must instead call the BeginExecute and EndExecute methods to obtain a query result that supports enumeration.

IQueryableをDataServiceQueryにキャストしてBeginExecuteとEndExecuteを非同期実行する必要がある。
以下のようなメソッドを作成してLINQを渡してやれば良い。

protected Task<IEnumerable<T>> ExecuteAsync<T>(IQueryable<T> query)
{
    var odataQuery = (DataServiceQuery<T>)query;
    var taskFactory = new TaskFactory<IEnumerable<T>>();
    return taskFactory.FromAsync(odataQuery.BeginExecute(null, null), iar => odataQuery.EndExecute(iar));
}

関連記事

初心者でも手順どおりに従うだけでロゴ画像が作れる

Webサイトを作ったので、ここを参考に ロゴ制作の練習をしました。  

記事を読む

Xamarin.FormsのTabbedPageでバッジを表示する

iOSのタブバーはNative側でバッジ機能があるのだが、Androidにはそもそもバッジが無いらし

記事を読む

WordPressでスパムコメント対策

WordPressのスパムコメント対策を行ったのでメモ。 標準でAkismetがインストール済み(

記事を読む

no image

Microsoft Flow 入門

社内LT用

記事を読む

no image

KeyboardNavigation以外でFocusVisualStyleを表示させる

WPFです。 結論としてはリフレクションで無理やりやれなくはなさそうという感じ。 元ネタはMSDN

記事を読む

no image

【Xcode】Capabilities全項目【v6.1時点】

Capabilitiesの各項目が何を示しているのか よくわからなかった、かつ日本語のサイトが少な

記事を読む

no image

This project references NuGet package(s) that are missing on this computer.

.nugetフォルダが設定されているソリューションから一部プロジェクトのみを抜き出すと発生する。 N

記事を読む

Flowで毎月の定期タスク設定

Flow を使い始めてみた。 Requrrenceで時間をトリガーにすることが出来るがSecond

記事を読む

シマンテックインストール時に「指定されたパスが空です。」

Windows10 64bit, Symantec Endpoint Protection はおそら

記事を読む

no image

No registered resource provider found for location ‘Japan East’ and API version ‘2.0’ for type ‘servers’.

Visual Studio から Azure Web Apps をデプロイするときに発生したエラーの

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP ↑