[解決済み] LINQによる順序の保持
2022-03-23 01:13:35
質問
LINQ to Objectsの命令で、順序付き配列を使っています。 配列の順序が変更されないようにするには、どのような操作を行うべきでしょうか?
どのように解決するのですか?
の方法を検討しました。 システム.Linq.Enumerable IEnumerableでない結果を返したものは破棄しています。 それぞれの備考をチェックして、結果の順序がソースの順序とどのように異なるかを判断しました。
順序を絶対的に保持する。 ソース要素をインデックスで結果要素にマッピングすることができます。
- AsEnumerable
- キャスト
- コンキャット
- 選択
- ToArray
- リスト
順序を保持する。 要素はフィルタリングされたり追加されたりしますが、順序は変更されません。
- 識別
- 除く
- 交差する
- OfType
- プリペンド(.net 4.7.1での新機能)
- スキップ
- スキップホイール
- テイク
- テイクホイール
- どこ
- Zip(.net4での新機能)
順序を破壊する - 結果をどのような順序で期待するかはわからない。
- ToDictionary
- ToLookup
Order Explicitlyの再定義 - 結果の順序を変更する場合に使用します。
- 注文方法
- 降順(OrderByDescending
- 逆方向
- センバツ
- 降順(ThenByDescending
いくつかの規則に従ってOrderを再定義する。
- GroupBy - IGroupingオブジェクトは、各IGroupingの最初のキーを生成したソース内の要素の順序に基づいて降伏されます。グループ化された要素は、ソースに表示される順序で生成されます。
- GroupJoin - GroupJoinは、outerの要素の順序を保持し、outerの各要素について、innerの一致する要素の順序を保持します。
- Join - outerの要素の順序を維持し、これらの要素のそれぞれについて、innerの一致する要素の順序を維持します。
- SelectMany - sourceの各要素に対して、セレクタが呼び出され、一連の値が返されます。
- Union - このメソッドが返すオブジェクトが列挙されたとき、Unionは1番目と2番目の順番で列挙し、まだ収得されていない各要素を収得します。
Edit: これに基づき、DistinctからPreserving orderに移行しました。 実装 .
private static IEnumerable<TSource> DistinctIterator<TSource>
(IEnumerable<TSource> source, IEqualityComparer<TSource> comparer)
{
Set<TSource> set = new Set<TSource>(comparer);
foreach (TSource element in source)
if (set.Add(element)) yield return element;
}
関連
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] 多次元配列の値によるソート方法
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] LINQのGroup by
-
[解決済み] LINQ を使用して、ある List<> にある項目を別の List<> にない項目として取得する。
-
[解決済み】オブジェクトの配列をプロパティ値でソートする
-
[解決済み】IEnumerable vs List - What to Use? どのように動作するのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない