ac#メソッド呼び出しを含むlinqリクエストを(非同期メソッドで)待機する方法

デリック

APIにGetメソッドを実装していて、データベースに対してlinq(Linq to Entity)リクエストを実行しています。

  var result = db.SomeEntity
             .ToList()
             .Select(a => new {a, Rank(a, key})
             .Where(obj => obj.Rank > 0));

ここで、Rankメソッドは、のプロパティに基づいて整数を返します。言い換えれば、私はオブジェクトを新しいオブジェクトに関連付けられた評価でラップしています。

APIのGetメソッドなので、非同期にしてlinqクエリを待つと便利です。問題は、Selectの前にToListを呼び出さなければならないため、SelectメソッドをSQLに変換する必要がないことです(Rankメソッドの呼び出しが機能するため)。そのためToListAsync、Where関数の後で使用できません。

例えば

await (db.Some.....Where(..)).ToListAsync()

どうすればいいのかわからない。助言がありますか?

デビッド

Where関数の後にToListAsyncを使用できません

DB操作を待つこともできます。操作を括弧で囲むだけで、全体的な結果が正しいタイプになります。

var result = (await db.SomeEntity.ToListAsync())
         .Select(a => new {a, Rank(a, key})
         .Where(obj => obj.Rank > 0));

逆に、操作全体は2つのステップで実行できます。

var list = await db.SomeEntity.ToListAsync();
var result = list.Select(a => new {a, Rank(a, key})
                 .Where(obj => obj.Rank > 0));

どちらにしても同じです。SelectそしてWhere、この場合に何を非同期に行いませんので、待つために他には何もありません。DB操作は、.ToList()ではなく、で発生してい.Where()ます。

注:それはだ場合は、すべてで行うことが可能Rank()LINQツーエンティティ式ツリーのロジックを、それはおそらくより全体的な選択肢となります。ロジックがより複雑になったとしても、カウントがSomeEntityかなりの量に達すると、パフォーマンス上の利点は明らかです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

非同期メソッド呼び出しで非同期メソッドデリゲートを渡す方法は?

分類Dev

Lua / MoonSharpスクリプトから非同期C#メソッドを呼び出して待機する方法は?

分類Dev

非同期(待機)メソッドを同期的に呼び出す方法は?

分類Dev

外部のreactスクリプトからクラスのac#メソッドを呼び出す

分類Dev

同期メソッドを呼び出す非同期メソッド

分類Dev

待たずに非同期メソッドを呼び出す#2

分類Dev

待機呼び出し後に合格する非同期NUnitテストメソッド

分類Dev

非同期メソッドは、呼び出し時または待機時に例外をスローしますか?

分類Dev

Hangfireで非同期メソッドを呼び出す方法は?

分類Dev

SquareAPIメソッドを非同期で呼び出す方法

分類Dev

非同期メソッドを実行するタスクを待機する方法

分類Dev

非同期メソッドが終了しますまで、メインスレッドを待機する方法は?

分類Dev

非同期メソッドを非同期で呼び出しますか?

分類Dev

Kotlin:同じメソッドのリストを非同期で待機する方法は?

分類Dev

コンストラクターで非同期メソッドを呼び出しますか?

分類Dev

Actionメソッド呼び出しを非同期Actionメソッド呼び出しに変換する

分類Dev

待機していない非同期メソッド呼び出しを見つける

分類Dev

待機していない非同期メソッド呼び出しを見つける

分類Dev

待機していない非同期メソッド呼び出しを見つける

分類Dev

C#からF#非同期メソッドを呼び出して待機しています

分類Dev

待機メソッドを呼び出すスレッドの組み込みロックを取得する方法

分類Dev

非同期ネストされたメソッドを呼び出す同期-非同期はパスの下で機能しますか?

分類Dev

バックグラウンドワーカー内で非同期のメディエーターデッドロックが待機しています-スレッドがそれ自体を呼び出していることを検出する方法

分類Dev

非同期メソッドでコールバックが呼び出されるのを待つ

分類Dev

メソッドの非同期呼び出しとAPI呼び出しの完了を待つ方法

分類Dev

待機中のメソッドを呼び出すメソッドと通常のメソッドを呼び出すメソッドの2つのメソッドをリファクタリングする方法はありますか?

分類Dev

非同期Task <bool>メソッドを呼び出す方法は?

分類Dev

静的メソッドを非同期的に呼び出す方法

分類Dev

BlazorからJS非同期メソッドを呼び出す方法

Related 関連記事

  1. 1

    非同期メソッド呼び出しで非同期メソッドデリゲートを渡す方法は?

  2. 2

    Lua / MoonSharpスクリプトから非同期C#メソッドを呼び出して待機する方法は?

  3. 3

    非同期(待機)メソッドを同期的に呼び出す方法は?

  4. 4

    外部のreactスクリプトからクラスのac#メソッドを呼び出す

  5. 5

    同期メソッドを呼び出す非同期メソッド

  6. 6

    待たずに非同期メソッドを呼び出す#2

  7. 7

    待機呼び出し後に合格する非同期NUnitテストメソッド

  8. 8

    非同期メソッドは、呼び出し時または待機時に例外をスローしますか?

  9. 9

    Hangfireで非同期メソッドを呼び出す方法は?

  10. 10

    SquareAPIメソッドを非同期で呼び出す方法

  11. 11

    非同期メソッドを実行するタスクを待機する方法

  12. 12

    非同期メソッドが終了しますまで、メインスレッドを待機する方法は?

  13. 13

    非同期メソッドを非同期で呼び出しますか?

  14. 14

    Kotlin:同じメソッドのリストを非同期で待機する方法は?

  15. 15

    コンストラクターで非同期メソッドを呼び出しますか?

  16. 16

    Actionメソッド呼び出しを非同期Actionメソッド呼び出しに変換する

  17. 17

    待機していない非同期メソッド呼び出しを見つける

  18. 18

    待機していない非同期メソッド呼び出しを見つける

  19. 19

    待機していない非同期メソッド呼び出しを見つける

  20. 20

    C#からF#非同期メソッドを呼び出して待機しています

  21. 21

    待機メソッドを呼び出すスレッドの組み込みロックを取得する方法

  22. 22

    非同期ネストされたメソッドを呼び出す同期-非同期はパスの下で機能しますか?

  23. 23

    バックグラウンドワーカー内で非同期のメディエーターデッドロックが待機しています-スレッドがそれ自体を呼び出していることを検出する方法

  24. 24

    非同期メソッドでコールバックが呼び出されるのを待つ

  25. 25

    メソッドの非同期呼び出しとAPI呼び出しの完了を待つ方法

  26. 26

    待機中のメソッドを呼び出すメソッドと通常のメソッドを呼び出すメソッドの2つのメソッドをリファクタリングする方法はありますか?

  27. 27

    非同期Task <bool>メソッドを呼び出す方法は?

  28. 28

    静的メソッドを非同期的に呼び出す方法

  29. 29

    BlazorからJS非同期メソッドを呼び出す方法

ホットタグ

アーカイブ