[解決済み] IComparerの引数の代わりにlambda式を使用する
2023-04-16 15:35:21
質問
C#では、メソッド呼び出しのIComparerの引数としてラムダ式を渡すことは可能でしょうか?
例えば、次のようなものです。
var x = someIEnumerable.OrderBy(aClass e => e.someProperty,
(aClass x, aClass y) =>
x.someProperty > y.SomeProperty ? 1 : x.someProperty < y.SomeProperty ? -1 : 0);
しかし、ラムダと匿名デリゲートの間には明らかな相乗効果があるように思えるので、私は何か愚かな間違ったことをしているのだと感じています。
TIA
どのように解決するのですか?
Jeppeが指摘しているように、.NET 4.5であれば、静的メソッドである
Comparer<T>.Create
.
そうでない場合は、同等であるべき実装です。
public class FunctionalComparer<T> : IComparer<T>
{
private Func<T, T, int> comparer;
public FunctionalComparer(Func<T, T, int> comparer)
{
this.comparer = comparer;
}
public static IComparer<T> Create(Func<T, T, int> comparer)
{
return new FunctionalComparer<T>(comparer);
}
public int Compare(T x, T y)
{
return comparer(x, y);
}
}
関連
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] リスト内包とラムダ+フィルタの比較
-
[解決済み] .NET String.Format()で数値の千の位にカンマを追加する
-
[解決済み] クロージャ」と「ラムダ」の違いは何ですか?
-
[解決済み] Distinct() with lambda?
-
[解決済み] ラムダ式からプロパティ名を取得する
-
[解決済み] Visual Studioのコンパイルエラー "mismatch between processor architecture "を修正するにはどうしたらいいですか?
-
[解決済み】C++11のラムダ式って何?
-
[解決済み】なぜFunc<T>ではなくExpression<Func<T>を使うのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】Nullableオブジェクトは値を持たなければならない?