[解決済み】コレクション内の全オブジェクトのプロパティに対して.Max()を実行し、最大値を持つオブジェクトを返す方法【重複】。
2022-03-27 23:57:54
質問
2つのintプロパティを持つオブジェクトのリストがあります。このリストは、別の linq クエリの出力です。そのオブジェクトは
public class DimensionPair
{
public int Height { get; set; }
public int Width { get; set; }
}
リストの中で最大の
Height
プロパティの値です。
の最高値はなんとか取れる。
Height
の値を取得することはできますが、オブジェクトそのものを取得することはできません。
Linqでこれを行うことはできますか?どのように?
どのように解決するのですか?
私たちは 拡張メソッド でまさにこれを行う。 MoreLINQ . 実装はそちらをご覧いただくとして、基本的にはデータを繰り返し処理し、これまでに見た最大の要素と、それが投影の下で生成した最大の値を記憶しておくというものです。
あなたの場合、次のようなことをするのですね。
var item = items.MaxBy(x => x.Height);
これは、Mehrdadの2番目の解決策以外の、ここで紹介されたどの解決策よりも優れています(IMO)。
MaxBy
):
- と違ってO(n)です。 前回の受付回答 これは、すべての反復で最大値を見つける(O(n^2)になる)。
- 順序解はO(n log n)
-
を取ると
Max
の値からその値を持つ最初の要素を見つけるのは O(n) ですが、シーケンスを 2 回反復することになります。可能であれば、LINQはシングルパスで使用すべきです。 - 集約版よりもずっと読みやすく、理解しやすく、投影の評価も要素ごとに一度だけである
関連
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] Entity Framework 5 レコードを更新する
-
[解決済み] オブジェクトのプロパティが存在するかどうかを、プロパティ名を持つ変数で確認するには?
-
[解決済み] ラムダ式からプロパティ名を取得する
-
[解決済み] LINQを使用して、プロパティ値の最小または最大値を持つオブジェクトを選択する方法
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み] 2つのリストを結合する
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み] LINQを使用して、プロパティ値の最小または最大値を持つオブジェクトを選択する方法