バージョン VB.net 4.5.2
閲覧ありがとうございます。
単票形式の帳票で12件ずつのデータを出力します。
Daoで取得したDataTableをFoeRoopでDtoに詰め替えるのですが
どうしてもコードが冗長になるので、もっとスッキリ書ける方法はないかアドバイスを頂きたいです。
DTOクラス
VB
1 2Class RPT_0060SettingDto 3 4 Public Property biz As String 5 Public Property rack_id As String 6 7 Public Property disp_color_1 As String 8 Public Property parts_no_1 As String 9 Public Property name_1 As String 10 Public Property parts_name_1 As String 11 Public Property location_no_1 As String 12 Public Property order_point_1 As String 13 14 Public Property disp_color_2 As String 15 Public Property parts_no_2 As String 16 Public Property name_2 As String 17 Public Property parts_name_2 As String 18 Public Property location_no_2 As String 19 Public Property order_point_2 As String 20 21 'プロパティが連番で12まで続く・・・ 22 23 Public Property disp_color_12 As String 24 Public Property parts_no_12 As String 25 Public Property name_12 As String 26 Public Property parts_name_12 As String 27 Public Property location_no_12 As String 28 Public Property order_point_12 As String 29 30End Class 31 32
問題のコード
VB
1Class RPT_0060Util 2 3 Shared Function GetSettingDto(ByVal table As DataTable) As List(Of RPT_0060SettingDto) 4 5 Dim dtoList As New List(Of RPT_0060SettingDto) 6 Dim settingDto As RPT_0060SettingDto 7 8 Dim i As Integer = 0 9 10 For Each row As DataRow In table.Rows 11 '改ページしたら初期化 12 If i > 0 And i Mod 12 = 0 Then 13 dtoList.Add(settingDto) 14 settingDto = New RPT_0060SettingDto 15 End If 16 17 18 If i Mod 12 = 0 Then 19 settingDto.disp_color_1 = row("disp_color").ToString 20 settingDto.parts_no_1 = row("parts_no").ToString 21 settingDto.parts_name_1 = row("parts_name").ToString 22 settingDto.location_no_1 = row("location_no").ToString 23 settingDto.order_point_1 = row("order_point").ToString 24 ElseIf i Mod 12 = 1 Then 25 settingDto.disp_color_2 = row("disp_color").ToString 26 settingDto.parts_no_2 = row("parts_no").ToString 27 settingDto.parts_name_2 = row("parts_name").ToString 28 settingDto.location_no_2 = row("location_no").ToString 29 settingDto.order_point_2 = row("order_point").ToString 30 End If 31 32 i = i + 1 33 Next 34 dtoList.Add(settingDto) 35 36 Return settingDto 37 38 End Function 39 40End Class
DTOのプロパティが1から12までの連番になっているので
settingDto.disp_color_ + 変数・・・で取得できそうなのですがうまくいきませんでした。
何か良い方法をご教授いただけると助かります。
回答2件
あなたの回答
tips
プレビュー