1つのステートメントですべてのXを遅延取得するIEnumerableを作成する方法

ダックス・フォール

C#では、ラムダ関数でイテレーターブロックを表すことはできません(たとえば、ラムダ関数内で「yieldreturn」を使用することはできません)。たとえば、列挙時にすべてのドライブを生成するレイジー列挙可能オブジェクトを作成したい場合は、次のようなことを行います。

IEnumerable<DriveInfo> drives = {foreach (var drive in DriveInfo.GetDrives()) 
                                     yield return drive;};

しばらく時間がかかりましたが、その機能を取得する方法としてこれを理解しました。

var drives = Enumerable.Range(0, 1).SelectMany(_ => DriveInfo.GetDrives());

もっと慣用的な方法はありますか?

Jeppe Stig Nielsen

次のような独自のメソッドを作成してみませんか。

public static IEnumerable<T> GetLazily<T>(Func<IEnumerable<T>> getSource)
{
  foreach (var t in getSource())
    yield return t;
}

または:

public static IEnumerable<T> GetLazily<T>(Func<IEnumerable<T>> getSource)
{
  return (new int[1]).SelectMany(_ => getSource());
}

次のような使用を許可する必要があります。

var drives = GetLazily(DriveInfo.GetDrives);

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Traversableのすべてのコンテキストを遅延して取得することは可能ですか?

分類Dev

Traversableのすべてのコンテキストを遅延して取得することは可能ですか?

分類Dev

1つのステートメントですべてのものを表示する方法

分類Dev

キーアップ偶数とifステートメントの間に遅延を作成する方法

分類Dev

whereステートメントを持つ2つのselectステートメントを使用して1つの出力を調べる結果を作成する

分類Dev

Pythonマルチスレッド印刷ステートメントは、すべてのスレッドが実行を完了するまで遅延します

分類Dev

1つのステートメントに依存する条件を作成する方法

分類Dev

1つのステートメントにすべての行を挿入する方法

分類Dev

従業員の遅延とOTを取得するための適切なSQLステートメント

分類Dev

1つのステートメントで1つはすべて偶数、もう1つはすべてオッズの2つの異なるリストを作成するにはどうすればよいですか?

分類Dev

DispatchQueue を使用して、switch ステートメントからの NSTextView の更新の遅延を修正する

分類Dev

遅延Goステートメントをテストする方法は?

分類Dev

テーブルを作成して1つのステートメントに値を挿入する方法

分類Dev

mysqlのcaseステートメントを使用して3列のデータを1つに取得する方法

分類Dev

値のリストから1つのステートメントで乱数を取得する方法。

分類Dev

1 つのクエリで 2 つの更新ステートメントを作成する方法は?

分類Dev

if ステートメントで、すべてのメッセージボックスを 1 つのみに連結する方法は? c#

分類Dev

遅延ステートメントをキャンセルする方法

分類Dev

KStreams-1つのトピックに関するメッセージの遅延を処理する方法

分類Dev

OracleIMPDPの遅延セグメント作成をオフにする

分類Dev

1つのテンプレートで2つの異なるビューを取得するためのajaxリクエストを作成する方法

分類Dev

Clang-Format:switchステートメントで1行のcaseステートメントを取得する方法

分類Dev

SQL:1つのステートメントで2つのテーブルのカウントを計算するのが遅いのはなぜですか?

分類Dev

ルートのすべてのセグメントを角度で取得する方法

分類Dev

SQL:すべての行を選択する方法。行1と2は、ステートメントの5つの名前の1つに相当します。

分類Dev

Oracle SQL-月末をすべて取得するselectステートメントを作成しますが、月末の1日か2日後に値を比較します。

分類Dev

1つのdivの下でさまざまな要素からすべてのテキストを取得する方法

分類Dev

すべてのif&else if&elseステートメントでリターンするvsコードの最後で1つのリターンを持つ

分類Dev

リストのすべてのメンバーを取得する

Related 関連記事

  1. 1

    Traversableのすべてのコンテキストを遅延して取得することは可能ですか?

  2. 2

    Traversableのすべてのコンテキストを遅延して取得することは可能ですか?

  3. 3

    1つのステートメントですべてのものを表示する方法

  4. 4

    キーアップ偶数とifステートメントの間に遅延を作成する方法

  5. 5

    whereステートメントを持つ2つのselectステートメントを使用して1つの出力を調べる結果を作成する

  6. 6

    Pythonマルチスレッド印刷ステートメントは、すべてのスレッドが実行を完了するまで遅延します

  7. 7

    1つのステートメントに依存する条件を作成する方法

  8. 8

    1つのステートメントにすべての行を挿入する方法

  9. 9

    従業員の遅延とOTを取得するための適切なSQLステートメント

  10. 10

    1つのステートメントで1つはすべて偶数、もう1つはすべてオッズの2つの異なるリストを作成するにはどうすればよいですか?

  11. 11

    DispatchQueue を使用して、switch ステートメントからの NSTextView の更新の遅延を修正する

  12. 12

    遅延Goステートメントをテストする方法は?

  13. 13

    テーブルを作成して1つのステートメントに値を挿入する方法

  14. 14

    mysqlのcaseステートメントを使用して3列のデータを1つに取得する方法

  15. 15

    値のリストから1つのステートメントで乱数を取得する方法。

  16. 16

    1 つのクエリで 2 つの更新ステートメントを作成する方法は?

  17. 17

    if ステートメントで、すべてのメッセージボックスを 1 つのみに連結する方法は? c#

  18. 18

    遅延ステートメントをキャンセルする方法

  19. 19

    KStreams-1つのトピックに関するメッセージの遅延を処理する方法

  20. 20

    OracleIMPDPの遅延セグメント作成をオフにする

  21. 21

    1つのテンプレートで2つの異なるビューを取得するためのajaxリクエストを作成する方法

  22. 22

    Clang-Format:switchステートメントで1行のcaseステートメントを取得する方法

  23. 23

    SQL:1つのステートメントで2つのテーブルのカウントを計算するのが遅いのはなぜですか?

  24. 24

    ルートのすべてのセグメントを角度で取得する方法

  25. 25

    SQL:すべての行を選択する方法。行1と2は、ステートメントの5つの名前の1つに相当します。

  26. 26

    Oracle SQL-月末をすべて取得するselectステートメントを作成しますが、月末の1日か2日後に値を比較します。

  27. 27

    1つのdivの下でさまざまな要素からすべてのテキストを取得する方法

  28. 28

    すべてのif&else if&elseステートメントでリターンするvsコードの最後で1つのリターンを持つ

  29. 29

    リストのすべてのメンバーを取得する

ホットタグ

アーカイブ