【C#】エンティティクラスから一部のプロパティのみをCSV出力したい(カスタム属性使用)
エンティティクラスのプロパティにカスタム属性を付けて、その属性を基にCSVへ出力をします。 また、カスタム属性には、出力順とヘッダーテキストを設定できるようにします。 ①カスタム属性クラスをつくります。 今回のカスタム属性はプロパティ向けなので、ターゲットをAttributeTargets.Propertyに。 多重設定を許さないので、AllowMultiple = falseに。 継承は必要ないので、Inherited = falseに。 ②エンティティクラス(適当)を用意して、出力したいプロパティにカスタム属性を設定します。 ※超適当でごめんなさい。 ③動作確認のため、エンティティクラスに適当に値を設定します。 ※ここからは、エンティティクラスを使用する任意のクラス、処理内に記載しています。 ④カスタム属性が設定されたプロパティのみを抽出して、出力順を昇順に並び替えます。 もう少しスマートなLinqの使い方が… .Where(...).OrderBy(...).Select(...)で書けばよいと思うの。 ⑤カスタム属性のヘッダーテキストと出力データを抽出します。 ※ここでは、エンティティの各プロパティもList<string>として格納していますが、お好きな様にしてください。 ⑥取り出した値をカンマ区切りでテキストファイルに出力します。 ソースは特別載せませんが、今回はList<List<string>>で渡していますので、1レコードの文字列リストをカンマでつないで1行として出力をしています。 ※参考:出力結果 ※動作確認はVS2022(preview)/.Net6(preview)です。