記事詳細


投稿日
2026年11月15日10時44分
タイトル

Payment クラスの各 Id プロパティ(SubjectNameId, PaymentTypeId, PaymentMethodId, IncomeCategoryId, IncomeTypeId)を、辞書などから TryGetValue で取得して new Payment { ... } にセットしたい

内容

以下に ASP.NET Core MVC での典型的な手順を示します。
辞書から値を安全に取得し、Payment オブジェクトを生成して List<Payment> に追加する方法です。

完全な例

Csharp
using System; using System.Collections.Generic; public class Payment { public int PaymentId { get; set; } // 自動生成される public DateTime Posted { get; set; } public bool InOut { get; set; } public int? SubjectNameId { get; set; } public string ItemName { get; set; } public string PaymentName { get; set; } public int? PaymentTypeId { get; set; } public int? PaymentMethodId { get; set; } public int? IncomeCategoryId { get; set; } public int? IncomeTypeId { get; set; } public decimal Amount { get; set; } } public class Program { public static void Main() { int thisYear = DateTime.Now.Year; int previousMonth = DateTime.Now.Month - 1; if (previousMonth == 0) { previousMonth = 12; thisYear--; } // 各Idを保持する辞書(例) var subjectNameDict = new Dictionary<string, int> { { "家計", 1 }, { "事業", 2 } }; var paymentTypeDict = new Dictionary<string, int> { { "予算", 10 }, { "支出", 20 } }; var paymentMethodDict = new Dictionary<string, int> { { "現金", 100 }, { "銀行振込", 200 } }; var incomeCategoryDict = new Dictionary<string, int> { { "給与", 300 }, { "副業", 400 } }; var incomeTypeDict = new Dictionary<string, int> { { "定期", 500 }, { "臨時", 600 } }; // TryGetValueで安全に取得 int subjectId; int paymentTypeId; int paymentMethodId; int incomeCategoryId; int incomeTypeId; subjectNameDict.TryGetValue("家計", out subjectId); // 見つからなければ0 paymentTypeDict.TryGetValue("予算", out paymentTypeId); paymentMethodDict.TryGetValue("現金", out paymentMethodId); incomeCategoryDict.TryGetValue("給与", out incomeCategoryId); incomeTypeDict.TryGetValue("定期", out incomeTypeId); // Paymentリスト var payments = new List<Payment>(); // new Paymentで追加 payments.Add(new Payment { Posted = new DateTime(thisYear, previousMonth, 1), InOut = true, SubjectNameId = subjectId != 0 ? subjectId : (int?)null, ItemName = "今月予算", PaymentName = null, PaymentTypeId = paymentTypeId != 0 ? paymentTypeId : (int?)null, PaymentMethodId = paymentMethodId != 0 ? paymentMethodId : (int?)null, IncomeCategoryId = incomeCategoryId != 0 ? incomeCategoryId : (int?)null, IncomeTypeId = incomeTypeId != 0 ? incomeTypeId : (int?)null, Amount = 268000 }); // 確認 foreach (var p in payments) { Console.WriteLine($"Posted: {p.Posted}, SubjectNameId: {p.SubjectNameId}, Amount: {p.Amount}"); } } }

ポイント

  1. 辞書の型
    Dictionary<string, int> のようにキーを名前、値をIDにする。

  2. TryGetValueの安全性
    TryGetValue はキーが存在しない場合でも例外を出さず、out 変数にデフォルト値(intなら0)を入れる。

  3. null許容型への変換
    Payment クラスの各 Id プロパティが int?(nullable int)の場合、
    辞書から取得した値が0なら null に変換してセットする。

  4. Addの手順
    payments.Add(new Payment { ... }) の中で辞書から取得した値を直接使うか、事前に変数に格納してから使う。

💡 この方法なら、辞書から安全に値を取得し、存在しない場合は null をセットできます。
もし複数の Payment を作る場合は、辞書キーを変えて同じ手順を繰り返せばOKです。

もし希望があれば、この処理を ループ化して複数のPaymentを自動生成する形 に書き換えた例も作れますが、
それも提示しますか?
そうすればコードがもっと簡潔になります。

Powered by Froala Editor

添付画像

画像はありません
Genreのカテゴリ-名
Contexts
編集 | 記事一覧