ホームページ > バックエンド開発 > C++ > どのlinq操作が順序で要素の順序を保持しますか?

どのlinq操作が順序で要素の順序を保持しますか?

Susan Sarandon
リリース: 2025-01-25 20:53:10
オリジナル
853 人が閲覧しました

Which LINQ Operations Preserve the Order of Elements in a Sequence?

LINQ で要素の順序を維持する

プログラミングでは、順序付けられたデータを処理するのが一般的なシナリオです。 LINQ to Objects を使用して配列を操作する場合、誤った変更を避けるために、どの操作が要素の順序を保持するかを理解することが重要です。

順序を維持する操作

次の LINQ 操作は、配列要素の元の順序を維持します。

  • AsEnumerable: IEnumerable を非ジェネリック IEnumerable に変換します。
  • Cast: 順序を変更せずに要素を別の型に変換します。
  • Concat: 各シーケンスの順序を維持しながら、2 つ以上のシーケンスを結合します。
  • Select: 各要素を新しい値に射影しますが、順序は維持します。
  • ToArray: 順序を維持しながら、IEnumerable を配列に実体化します。
  • ToList: 元の順序を維持したまま、IEnumerable を List に具体化します。

順序を維持するいくつかの操作

一部の LINQ 操作では、残りの要素の順序を変更せずに要素をフィルターまたは追加します。

  • Distinct: 重複した要素を削除します (等価比較に基づいて)。 (以下の説明を参照)
  • Except: 元のシーケンスの順序を維持したまま、指定されたシーケンス内に見つからない要素を返します。
  • Intersect: 最初のシーケンスの順序を維持したまま、両方のシーケンスで見つかった要素を返します。
  • OfType: 順序を維持して、特定のタイプの要素をフィルターします。
  • Prepend (.NET 4.7.1 の新機能): シーケンスの先頭に要素を追加します。
  • スキップ: シーケンスの先頭で指定された数の要素をスキップし、残りの要素の順序を維持します。
  • Skipwhile: 述語が false になるまで要素をスキップし、残りの要素の順序を維持します。
  • Take: 順序を維持して、シーケンスの先頭にある指定された数の要素を返します。
  • Takewhile: 述語が false になるまで、順序を維持して要素を返します。
  • Where: 述語に基づいて要素をフィルターし、一致する要素の順序を維持します。
  • Zip (.NET 4 の新機能): 2 つのシーケンスの要素をペアにして、各シーケンスの順序を保持します。

順序を破壊する操作

次の LINQ 操作では、要素の元の順序が保持されません:

  • ToDictionary: シーケンスを辞書に変換します。辞書は順序を維持しません。
  • ToLookup: ToDictionary と同様に、順序は保持されません。

操作の順序を再定義します

これらの LINQ 操作は、結果の順序を明示的に変更します。

  • Orderby: key選択者に従って要素に従って要素を並べ替えます。 OrderByDessending:
  • キー選択担当者に従って、注文選択者に従って要素を並べ替えます。
  • 逆:要素を逆転させる順序。
  • then:OrderbyまたはOrderBydesmentingで結合し、2番目のキーでソートします。
  • thenbydescending:
  • OrderbyまたはOrderByDessendingと結合し、2番目のキーでソートします。
  • 特別な状況
  • GroupBy:
グループオブジェクトの順序は、各グループの最初の要素の順序に基づいています。グループ内の要素は、ソースシーケンスの順序で返されます。

groupjoin:外部シーケンス内の要素の順序と、各外部要素の内部シーケンスの一致する要素の順序。

    結合:
  • GroupJoinと同様に、外部シーケンスの要素の順序を保持し、内部シーケンスを一致させます。 selectmany:
  • 順序は、ソース要素の順序とセレクター関数によって返されるシーケンスによって決定されます。
  • ユニオン:2つのシーケンスからの要素は、元の順序で生成され、繰り返されません。
  • 説明: .NETでの実装に基づいて、分布は「維持された順序」カテゴリに移動しました。

以上がどのlinq操作が順序で要素の順序を保持しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート