[解決済み] FirstOrDefault。null 以外のデフォルト値
2022-04-23 22:08:10
質問
私の理解では、Linqではメソッド
FirstOrDefault()
を返すことができます。
Default
の値は、null 以外のものです。 クエリ結果に項目がない場合、この(および類似の)メソッドで null 以外のどのようなものを返すことができるのか、まだ解明されていません。 特定のクエリに値がない場合、あらかじめ定義された値をデフォルト値として返すように設定する方法はありますか?
解決方法は?
バリュータイプに限らず、一般的なケースです。
static class ExtensionsThatWillAppearOnEverything
{
public static T IfDefaultGiveMe<T>(this T value, T alternate)
{
if (value.Equals(default(T))) return alternate;
return value;
}
}
var result = query.FirstOrDefault().IfDefaultGiveMe(otherDefaultValue);
これでもまだ でした。 を指定したのか、それとも最初の値がデフォルトだったのか。
これを気にするのであれば、次のようなことも可能です。
static class ExtensionsThatWillAppearOnIEnumerables
{
public static T FirstOr<T>(this IEnumerable<T> source, T alternate)
{
foreach(T t in source)
return t;
return alternate;
}
}
として使用します。
var result = query.FirstOr(otherDefaultValue);
しかし、ステーキさんが指摘されているように、これは
.DefaultIfEmpty(...).First()
.
関連
-
[解決済み】WCFとは何か、何ができるのか?
-
[解決済み] VB.NETでプログラムパスを取得する?
-
[解決済み] LINQ: フィルタリング基準で SingleOrDefault と FirstOrDefault() を使用する場合
-
[解決済み] CryptographicException「キーセットが存在しない」、ただしWCF経由に限る
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] LINQで.Firstと.FirstOrDefaultを使用するタイミングは?
-
[解決済み] LINQを使用して、プロパティ値の最小または最大値を持つオブジェクトを選択する方法
-
[解決済み】LINQクエリでDictionary<string, string>を返す。
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】この動詞型ではcontent-bodyを送信できない
-
[解決済み】XAMLにSystem.Stringを埋め込む
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] <Database> コンテキストを支えるモデルが、データベース作成後に変更されました。
-
[解決済み] EF Coreのadd-migrationのビルドに失敗しました。
-
[解決済み] LINQ to Entitiesはメソッドを認識しません。
-
[解決済み] WinSCP 応答待ちタイムアウト
-
[解決済み] ファイルまたはアセンブリをロードできませんでした 操作がサポートされていません。(HRESULT: 0x80131515 からの例外)
-
[解決済み] 1は有効なWin32アプリケーションではありません "を解決するには?
-
[解決済み] Visual Studioの「Any CPU」ターゲットはどういう意味ですか?