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